We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
如何使用 Spring AI Alibaba 构建一个能实际落地、具备高度功能可靠性的 AI 应用,这是用户面临的一个很大的问题。
比如我们当前提供的示例就很难在生产环境直接用起来:
从大的方向上来说,有两种模式可以解决不确定性、效果不好的问题:
本文我们主要围绕 RAG 场景展开,探索如何使用 Spring AI Alibaba 构建面向生产可用的AI应用。
以下是基本 RAG 流程:
文档/知识库的处理,既包括丰富的不同来源数据的加载,也包括与向量化等模型交互前的语义化处理等。对应上图中草绿色背景部分。
主要解决数据来源的问题,包括数据**传输协议、数据内容格式**等,要去考虑如何与当前spring ai实现适配。
Spring 提供了 Resource 接口及其多种实现,包括:
Resource
UrlResource
ClassPathResource
FileSystemResource
当前需要做的事情:
Document loaders | 🦜️🔗 LangChain
Chat loaders | 🦜️🔗 LangChain
Transformer 是对文档的预处理过程,主要是从文本格式、文本大小、文本元数据提取等方面进行,目前看到的一些实现主要分为三类:
理论上任何文档转换相关的动作都可以在这个位置做?比如文本内容转换、翻译、信息提取等。
我们可以将文档依次经过多个transformer处理,最终将处理后的文档数据交给 VeceorSrore
VectorStore 适配,不同的 VectorStore 在特性和效果上有差异
作为参考并方便说明要实现的内容,我们以Langchain4j做示例
<font style="color:rgb(31, 35, 40);">DefaultRetrievalAugmentor</font> decomposes the entire RAG flow into more granular steps and base components:
<font style="color:rgb(31, 35, 40);">DefaultRetrievalAugmentor</font>
<font style="color:rgb(31, 35, 40);">QueryTransformer</font>
<font style="color:rgb(31, 35, 40);">QueryRouter</font>
<font style="color:rgb(31, 35, 40);">ContentRetriever</font>
<font style="color:rgb(31, 35, 40);">Retriever</font>
<font style="color:rgb(31, 35, 40);">ContentAggregator</font>
<font style="color:rgb(31, 35, 40);">ContentInjector</font>
Spring AI 中的很多概念,对于普通 Java 开发者来说是很难理解的(DocumentReader、Tranformer、Splitter、Retriavel等),数据检索处理的过程对普通 Java 开发者也是很难理解的。
这有点像是让普通 Java 业务开发工程师,转型为大数据处理/检索系统开发工程师
以上工具集运行在RAG工程的不同环节,不同场景下可能分别需要用到不同的工具,需要我们定义一些最佳实践场景,每个场景下通过结合几个特定的工具实现最优效果。
通过最佳实践解决用户面临的问题:
The text was updated successfully, but these errors were encountered:
No branches or pull requests
如何使用 Spring AI Alibaba 构建一个能实际落地、具备高度功能可靠性的 AI 应用,这是用户面临的一个很大的问题。
比如我们当前提供的示例就很难在生产环境直接用起来:
从大的方向上来说,有两种模式可以解决不确定性、效果不好的问题:
本文我们主要围绕 RAG 场景展开,探索如何使用 Spring AI Alibaba 构建面向生产可用的AI应用。
数据处理流程
以下是基本 RAG 流程:
要解决的核心问题
文档/知识库的处理,既包括丰富的不同来源数据的加载,也包括与向量化等模型交互前的语义化处理等。对应上图中草绿色背景部分。
工具集完善度
DocumentLoader
主要解决数据来源的问题,包括数据**传输协议、数据内容格式**等,要去考虑如何与当前spring ai实现适配。
Spring 提供了
Resource
接口及其多种实现,包括:UrlResource
:用于访问 URL 资源。ClassPathResource
:用于从类路径加载资源。FileSystemResource
:用于访问文件系统中的资源。]当前需要做的事情:
Document loaders | 🦜️🔗 LangChain
Chat loaders | 🦜️🔗 LangChain
DocumentTransformer
Transformer 是对文档的预处理过程,主要是从文本格式、文本大小、文本元数据提取等方面进行,目前看到的一些实现主要分为三类:
理论上任何文档转换相关的动作都可以在这个位置做?比如文本内容转换、翻译、信息提取等。
VectorStore
VectorStore 适配,不同的 VectorStore 在特性和效果上有差异
Retriever
作为参考并方便说明要实现的内容,我们以Langchain4j做示例
<font style="color:rgb(31, 35, 40);">DefaultRetrievalAugmentor</font>
decomposes the entire RAG flow into more granular steps and base components:<font style="color:rgb(31, 35, 40);">QueryTransformer</font>
<font style="color:rgb(31, 35, 40);">QueryRouter</font>
<font style="color:rgb(31, 35, 40);">ContentRetriever</font>
(the old<font style="color:rgb(31, 35, 40);">Retriever</font>
is now deprecated)<font style="color:rgb(31, 35, 40);">ContentAggregator</font>
<font style="color:rgb(31, 35, 40);">ContentInjector</font>
面向场景的最佳实践
Spring AI 中的很多概念,对于普通 Java 开发者来说是很难理解的(DocumentReader、Tranformer、Splitter、Retriavel等),数据检索处理的过程对普通 Java 开发者也是很难理解的。
这有点像是让普通 Java 业务开发工程师,转型为大数据处理/检索系统开发工程师
工具集使用的最佳实践
面向场景的最佳实践
以上工具集运行在RAG工程的不同环节,不同场景下可能分别需要用到不同的工具,需要我们定义一些最佳实践场景,每个场景下通过结合几个特定的工具实现最优效果。
通过最佳实践解决用户面临的问题:
在知识库上适当提供一些建议
The text was updated successfully, but these errors were encountered: