检索增强生成 (RAG)模式
您可以构建检索增强生成 (RAG)模式,生成以知识库信息为基础的事实输出。
RAG 模式将知识库中的内容处理成便于搜索的矢量格式。 当用户提问时,RAG 模式会检索一组相关段落,并将其提供给 LLM。 LLM 会针对用户的问题生成一个事实性的答案。
RAG 模式的能力和资源
您可以使用以下功能和资源创建 RAG 模式:
- 向量嵌入
- 创建向量嵌入,将句子或段落的含义编码为数字表示。 向量提供了一种有效的方法,可以在知识库中找到与用户所提问题最相似的文本段落。 向量存储在向量数据库中,并通过向量索引进行检索。
- 请参阅创建向量索引。
- 文本提取
- 将 PDF 或图像中的内容转换为文本,以便进行矢量化。
- 请参阅从文件中提取文本。
- 检索段落重新排序
- 对通过相关性而非相似性检索到的结果重新排序。
- 参见重新排序文件段落。
- 向量存储
- 您可以选择内存中的 Chroma 矢量存储、自动设置的 watsonx.data Milvus 矢量存储,或您创建连接的其他矢量存储。
- 请参见矢量存储类型。
- 用于嵌入和重排的编码器模型
- 可从 IBM 和第三方编码器模型中进行选择,以创建嵌入和重排段落。
- 请参见支持的编码器基础型号。
- 推理的基础模型
- 从一系列基础模型中进行选择,选择按需部署模型,或导入和部署自定义模型。
- 查看支持您的使用案例的基金会模型。
- 改编样本
- 从示例 RAG 模式开始,然后根据自己的使用情况进行调整。
- 参见 RAG 样本。
工作方式
您可以使用以下方法为 RAG 模式编写代码:
您可以使用用户界面中的工具,体验无代码或低代码工作:
- Prompt Lab :您可以与上传的文件或矢量索引聊天。
- AutoAI RAG :您可以自动搜索经过优化的、具有生产质量的 RAG 模式。
- 矢量索引您可以根据一个或多个文档创建矢量索引。
检索增强生成模式架构
通过使用知识库中的信息,您可以扩展在提示中包含上下文的技术。
此视频提供了一种可视方法来学习本文档中的概念和任务。
视频章节
[ 0:08 ] 场景描述
[ 0:27 ] 模式概述
[ 1:03 ] 知识库
[ 1:22 ] 搜索组件
[ 1:41 ] 利用上下文增强提示
[ 2:13 ] 生成输出
[ 2:31 ] 完整解决方案
[ 2:55 ] 搜索的注意事项
[ 3:58 ] 提示文本的注意事项
[ 5:01 ] 可解释性的注意事项
下图说明了运行时的检索增强生成模式。 虽然该图显示了问题回答示例,但同一工作流程支持其他用例。
检索增强生成模式包括以下步骤:
- 您的知识库经过预处理,可将内容转换为纯文本并进行矢量化。 预处理可包括文本提取,将表格和图像中的信息转换成 LLM 可以解读的文本。
- 用户提问
- 问题被转换为文本嵌入。
- 在包含知识库矢量化内容的矢量存储空间中搜索与用户问题相似的内容。
- 最相关的搜索结果会以文本格式添加到提示中,并附有说明,如 "仅使用以下段落中的信息回答以下问题"
- 综合提示文本(指令 + 搜索结果 + 问题)被发送到基础模型。
- 基础模式利用提示中的上下文信息生成事实性答案。
知识库
您的知识库可以是任何包含信息的人工制品集合,例如
- 内部公司 Wiki 页面中的流程信息
- 文件 GitHub
- 协作工具中的消息
- 产品文档中的主题,可以包含长文本块
- 数据库中支持结构化查询语言 (SQL) 查询的文本段落,例如 Db2
- 具有文件集合 (例如,存储为 PDF 文件的法律合同) 的文档库
- 内容管理系统中的客户支持凭单
大多数支持的矢量存储和 AutoAI 都支持 PDF、HTML、DOCX、MD 或纯文本类型的文件。 请参见接地文件类型。
内容预处理
设置 RAG 模式时,需要对知识库中的文档进行预处理。 预处理首先将内容转换为纯文本。 您可以配置文本提取,将表格和图像中的信息转换为 LLM 可以解释的文本。 然后,嵌入模型对文本进行矢量化处理,将其存储到矢量数据库中,并创建一个矢量索引用于检索内容。
当用户提问时,嵌入模型会对文本进行矢量化。
内容检索和排名
检索器在矢量数据库中搜索与查询文本的矢量嵌入最相似的内容。 检索到的段落按照与问题的相似度进行排序。 您可以在 RAG 模式中添加重新排序模型,以评估检索到的热门段落与回答问题的相关性。
答案生成
检索到的段落、用户的问题和说明将以提示的形式发送到基础模型。 基础模型生成答案并返回给用户。
RAG 模式样本
下面的示例笔记本演示了如何应用检索增强生成模式。
在使用这些笔记本样本之前,请查看样本的使用条款。
| 样本 | 描述 | 链接 |
|---|---|---|
| Chroma 示例 | 本示例笔记本包含步骤和代码,用于演示如何通过 watsonx.ai 中的Chroma数据库支持检索增强生成。 它引入了用于数据检索,知识库构建和查询以及模型测试的命令。 | 使用watsonx和 Chroma 通过 RAG 回答问题 |
| LangChain 示例 | 本示例笔记本包含步骤和代码,用于演示在 watsonx.ai 中使用 LangChain 支持检索增强生成。 它引入了用于数据检索,知识库构建和查询以及模型测试的命令。 | 使用watsonx、Chroma 和LangChain通过 RAG 回答问题 |
| LangChain 和 Elasticsearch 向量数据库的示例 | 此样本笔记本演示如何使用 LangChain 将嵌入模型应用于 Elasticsearch 向量数据库中的文档。 然后, Notebook 会建立索引并使用数据存储器来生成入局问题的答案。 | 使用watsonx、Elasticsearch 和LangChain回答问题(RAG) |
| 使用Elasticsearch Python库的示例 | 本示例笔记本演示了如何使用Elasticsearch Python库将嵌入模型应用于Elasticsearch向量数据库中的文档。 然后, Notebook 会建立索引并使用数据存储器来生成入局问题的答案。 | 使用watsonx 和Elasticsearch Python库回答问题 (RAG) |
了解更多
试用以下教程:
母主题: 生成式人工智能解决方案