设置检索增强生成(RAG)
watsonx Code Assistant 标准计划
RAG 是通过使用附加语境进行提示增强来优化大型语言模型 (LLM) 输出的过程。 如果您提交查询,watsonx Code Assistant 会使用 RAG 工具从您的代码库或文档中检索信息。 在将查询发送给 LLM 模型之前,相关上下文会被附加到查询中。 RAG 系统确定需要纳入或排除的信息来源,以生成具有最有用信息的回复。
RAG 要求 watsonx Code Assistant 标准计划和 Visual Studio Code 扩展。 它不能与 Eclipse 插件一起使用。
IBM watsonx Code Assistant 支持 RAG,通过代码库和文档中的最新相关内容提高用户查询的响应质量。 RAG 可减少模型幻觉,提高生成反应的准确性。
您可以使用 RAG 为聊天信息提取相关信息,将 watsonx Code Assistant 与未存储在 Git 代码库中的特定代码库和项目文档进行配置。 您可以配置 API 文档、自述文件、技术和设计文档、Markdown、PDF、Word 和 PowerPoint 文档等文档。
下图说明了为 watsonx Code Assistant 配置 RAG 的步骤:
启用 RAG
启用 RAG:
-
在 IBM Cloud 上提供一个矢量存储空间。
-
在 IBM Cloud 上提供 Milvus 或 Elasticsearch 向量存储实例。 如果 IBM Cloud 上已经有矢量存储,则可以跳过此步骤。
-
要配置 Elasticsearch 向量存储实例,请参阅 配置 Databases for Elasticsearch。
-
要配置 Milvus 向量存储实例,请参阅 配置 watsonx.data。
Milvus 是 的一部分。IBM watsonx.data 您可以使用 watsonx.data 企业计划配置 Milvus 实例。
-
-
可选:为 IBM watsonx.ai Studio 提供一个实例,以索引代码库。
-
-
在 Milvus 或 Elasticsearch 中索引或刷新代码库。 更多信息,请参阅 使用 IBM watsonx.ai Studio 索引代码库。
设置连接资产:
-
使用 watsonx Code Assistant 服务实例中的现有部署空间。
-
为向量存储中创建的每个索引创建连接资产。 更多信息,请参阅 创建连接资产。
-
-
在 Visual Studio Code 中设置 Git 个人访问令牌,并使用支持 RAG 的提示。
- 在 GitHub 中单击您的配置文件图标,然后转到设置 > 开发人员设置 > 个人访问令牌 > 令牌 (经典)。
- 复制您的个人访问令牌。
- 在 Visual Studio Code 中,单击视图,然后单击命令调板。
- 搜索
WCA,然后单击 Enter GitHub 用于 WCA 的个人访问令牌。 - 输入 GitHub 个人访问令牌,然后按
Enter或Return。 - 在聊天信息中,输入
@repo < instruction >或@docs < instruction >,即可生成使用矢量存储中引用的存储库或文档的上下文的响应。 用提示信息取代< instruction >参数。
-
使用引用存储库的语法示例:
@repo how is a chat message processed?watsonx Code Assistant 会根据以下条件使用索引库:
-
如果在 Visual Studio Code 中打开了一个版本库,watsonx Code Assistant 默认搜索已打开版本库中的上下文。
-
如果在 Visual Studio Code 中打开了多个版本库,watsonx Code Assistant 会从版本库中搜索与最近访问的文件相关联的上下文。
-
Watsonx Code Assistant 在聊天中输入 语法时,会检查索引库中的 文件。
@repo < instruction >repo.yaml如果配置了一个或多个 YAML 配置文件,watsonx Code Assistant 会使用所有配置的资源库生成响应。 如果未配置 YAML 配置,watsonx Code Assistant 将使用选定的版本库。
-
-
使用引用文档集的语法示例:
@docs What are the steps to setup a connection to the user data store?Watsonx Code Assistant 根据以下条件使用索引文档集:
-
如果文档是在 Visual Studio Code 中打开的,watsonx Code Assistant 默认在打开的资源库中搜索上下文。
-
如果在 Visual Studio Code 中打开了多个文档集,watsonx Code Assistant 会从最近访问的文档中搜索上下文。
-
Watsonx Code Assistant 在聊天中输入 语法时,会检查索引库中的 文件。
@docs < instruction >docs.yaml如果配置了一个或多个 YAML 配置文件,watsonx Code Assistant 会使用所有配置的文档集合生成响应。 如果未配置 YAML 配置,watsonx Code Assistant 将使用部署空间中所有名称为docs_<filename>的文档。
-
可选:如果您需要为索引存储库或文档集合设置 YAML 配置,请参阅 为 RAG 设置 YAML 配置。
为 RAG 设置 YAML 配置
您可以有选择地设置 YAML 配置,以允许 watsonx Code Assistant 同时搜索多个资源库,或使用向量存储中的特定索引代码库或文档。 如果不设置 YAML 配置,watsonx Code Assistant 默认使用在 Visual Studio Code 中打开的版本库。
watsonx Code Assistant 使用 API 密钥授权方法,确保你只能访问授权的存储库或文档集。
要为特定索引存储库设置 YAML 配置,请完成以下步骤:
-
在版本库根目录下创建
.wca/repo文件夹。 -
创建包含以下字段的 YAML 文件:
repo: - url: git@github.ibm.com:code-assistant/<my-code>.git如果需要使用多个版本库配置 watsonx Code Assistant,请为每个需要用于生成响应的版本库创建一个
repo.yaml文件。
要为特定文档集设置 YAML 配置,请完成以下步骤:
-
在版本库根目录下创建
.wca/docs文件夹。 -
创建包含以下字段的 YAML 文件:
docs: - url: my_collection
用例场景
用例场景解释了 RAG 如何工作,以及如何从索引库或文档中检索数据。
使用单一代码库
如果您在单个版本库中工作,并希望将该版本库中的代码用作聊天对话的上下文,请完成以下步骤:
-
确保您可以访问 GitHub 中的版本库。
-
索引矢量存储中的存储库。 更多信息,请参阅 使用 IBM watsonx.ai Studio 索引代码库。
-
为资源库创建连接资产。 更多信息,请参阅 创建连接资产。
-
从 GitHub 账户生成 Git 个人访问令牌,并在 Visual Studio Code 中完成设置。
-
在 Visual Studio Code 中打开版本库。
-
在聊天中使用
@repo命令生成使用资源库上下文的响应。
使用多个代码库
如果您正在使用的版本库与另一个版本库存在依赖关系,您可以将两个版本库中的代码都用作聊天对话的上下文。 要使用这两个版本库,请完成以下步骤:
-
确保您可以访问 GitHub 中的两个软件源。
-
分别为向量存储中的每个存储库建立索引。 更多信息,请参阅 使用 IBM watsonx.ai Studio 索引代码库。
-
为每个矢量存储创建两个连接资产。 更多信息,请参阅 创建连接资产。
-
从 GitHub 账户生成 Git 个人访问令牌,并在 Visual Studio Code 中完成设置。
-
在第一个版本库中,设置 YAML 配置以列出两个版本库。
-
在聊天中使用
@repo命令生成使用两个版本库中上下文的响应。
如果两个版本库使用相同的索引,则第二个版本库不会使用 GitHub 访问检查。 如果您没有其中一个版本库的访问权限,watsonx Code Assistant 只从授权版本库生成上下文。
让团队中的所有用户都能访问项目文档库
您可以允许团队中的所有用户访问项目文档库,并将文档作为聊天对话的上下文。
允许所有用户访问:
-
索引矢量存储中的项目文档库。 更多信息,请参阅 使用 IBM watsonx.ai Studio 索引代码库。
如果所有用户都能访问编入索引的项目文档库,则可以对所有文档库使用相同的索引。 如果用户对索引库有访问限制,请参阅 启用不同子团队的用户访问项目文档库。
-
在部署空间中为文档索引创建连接资产,其中包括团队的所有用户。 更多信息,请参阅 创建连接资产。
-
在聊天中使用
@docs命令生成使用文档索引中上下文的回复。
GitHub 个人访问令牌不用于验证文件内容的访问权限。 您可以在矢量存储的同一索引中组合多个文档库。 与代码库相比,文档内容的限制较少,而且所有文档库的单一索引可简化索引管理流程。 只有部署空间中的入驻用户才有权访问文档库。
使不同子团队的用户能够访问项目文档库
在此使用案例中,一个大型团队中的不同子团队负责维护项目文档库。 文件库的访问仅限于不同的分小组。 其他子团队无法访问这些文档库。
使每个子团队都能访问相关的项目文档库:
-
在矢量存储中为文档库分别建立索引。 更多信息,请参阅 使用 IBM watsonx.ai Studio 索引代码库。
-
确保为每个包含其用户的子团队创建部署空间。
-
为每个文档库索引在相关部署空间中创建一个连接资产。 更多信息,请参阅 创建连接资产。
-
在聊天中使用
@docs命令生成使用文档索引中上下文的回复。
Watsonx Code Assistant 使用基于分配给用户的部署空间的文档存储库索引。 不需要客户端配置。
允许基于角色的用户访问项目文件库
在这种用例中,团队中的用户需要根据自己的角色访问不同的文档集。 作为上下文使用的文件范围因用户而异,没有访问限制。 例如,开发人员只需要技术和应用程序接口文档,而业务分析人员则侧重于业务流程文档。
自定义用作上下文的文档库:
-
分别索引矢量存储中的每个文档库。 更多信息,请参阅 使用 IBM watsonx.ai Studio 索引代码库。
-
为团队部署空间中的每个索引创建连接资产。 更多信息,请参阅 创建连接资产。
-
为用作上下文的所需文档索引设置 YAML 配置。 如果需要使用多个文档索引,请为每个文档索引设置 YAML 配置。
-
在聊天中使用
@docs命令生成使用文档索引中上下文的回复。