RAG Engine 以前称为 LlamaIndex on Vertex AI,最近则称为 Knowledge Engine,是一种用于开发增强型情境大语言模型 (LLM) 应用的数据框架。当您将 LLM 应用于数据时,就会发生上下文增强。这实现了检索增强生成 (RAG)。
LLM 的一个常见问题是,它们不理解私有知识,也就是您的组织的数据。借助 RAG Engine,您可以使用更多私密信息丰富 LLM 上下文,因为该模型可以减少幻觉并更准确地回答问题。
通过将更多知识来源与 LLM 所拥有的现有知识相结合,可以提供更好的上下文。改进的上下文与查询一起可提高 LLM 的回答质量。
以下概念对于理解 RAG Engine 至关重要。这些概念按检索增强生成 (RAG) 过程的顺序列出。
数据注入:从不同数据源注入数据。例如,本地文件、Cloud Storage 和 Google 云端硬盘。
数据转换:转换数据以准备编入索引。例如,数据会拆分为多个分块。
嵌入:字词或文本片段的数值表示法。这些数字捕获了文本的语义含义和上下文。相似或相关的字词或文本往往具有类似的嵌入,这意味着它们在高维向量空间中彼此更靠近。
数据索引编制:RAG Engine 会创建一个称为语料库的索引。索引会对知识库进行结构化,以便进行搜索优化。例如,索引就像一本大型参考书的详细目录。
检索:当用户提问或提供问题时,RAG Engine 中的检索组件会搜索其知识库,以查找与查询相关的信息。
生成:检索到的信息将成为添加到原始用户查询的上下文(作为生成式 AI 模型的指南),以生成确实有依据的相关响应。
支持 RAG 的生成式 AI 模型
本部分列出了支持 RAG 的模型。
Gemini 模型
下表列出了支持 RAG Engine 的 Gemini 模型及其版本:
模型 | 版本 |
---|---|
Gemini 1.5 Flash | gemini-1.5-flash-002 gemini-1.5-flash-001 |
Gemini 1.5 Pro | gemini-1.5-pro-002 gemini-1.5-pro-001 |
Gemini 1.0 Pro | gemini-1.0-pro-001 gemini-1.0-pro-002 |
Gemini 1.0 Pro Vision | gemini-1.0-pro-vision-001 |
Gemini | gemini-experimental |
自行部署的模型
RAG Engine 支持 Model Garden 中的所有模型。
将 RAG Engine 与自行部署的开放模型端点搭配使用。
# Create a model instance with your self-deployed open model endpoint
rag_model = GenerativeModel(
"projects/PROJECT_ID/locations/REGION/endpoints/ENDPOINT_ID",
tools=[rag_retrieval_tool]
)
Vertex AI 上使用托管 API 的模型
Vertex AI 上支持 RAG Engine 的托管 API 模型包括:
以下代码示例演示了如何使用 Gemini GenerateContent
API 创建生成式模型实例。模型 ID /publisher/meta/models/llama-3.1-405B-instruct-maas
位于模型卡片中。
# Create a model instance with Llama 3.1 MaaS endpoint
rag_model = GenerativeModel(
"projects/PROJECT_ID/locations/REGION/publisher/meta/models/llama-3.1-405B-instruct-maas",
tools=[rag_retrieval_tool]
)
以下代码示例演示了如何使用与 OpenAI 兼容的 ChatCompletions
API 生成模型回答。
# Generate a response with Llama 3.1 MaaS endpoint
response = client.chat.completions.create(
model="meta/llama-3.1-405b-instruct-maas",
messages=[{"role": "user", "content": "your-query"}],
extra_body={
"extra_body": {
"google": {
"vertex_rag_store": {
"rag_resources": {
"rag_corpus": rag_corpus_resource
},
"similarity_top_k": 10
}
}
}
},
)
嵌入模型
嵌入模型用于创建语料库,并在生成回答期间用于搜索和检索。本部分列出了支持的嵌入模型。
textembedding-gecko@003
textembedding-gecko-multilingual@001
text-embedding-004
(默认)text-multilingual-embedding-002
textembedding-gecko@002
(仅限微调后版本)textembedding-gecko@001
(仅限微调后版本)
如需详细了解如何调优嵌入模型,请参阅调优文本嵌入。
还支持以下开放嵌入模型。您可以在 Model Garden 中找到它们。
e5-base-v2
e5-large-v2
e5-small-v2
multilingual-e5-large
multilingual-e5-small
RAG 支持的文档类型
仅支持文本文档。下表显示了文件类型及其文件大小限制:
文件类型 | 文件大小限制 |
---|---|
Google 文档 | 从 Google Workspace 导出时为 10 MB |
Google 绘图 | 从 Google Workspace 导出时为 10 MB |
Google 幻灯片 | 从 Google Workspace 导出时为 10 MB |
HTML 文件 | 10 MB |
JSON 文件 | 1 MB |
Markdown 文件 | 10 MB |
Microsoft PowerPoint 幻灯片(PPTX 文件) | 10 MB |
Microsoft Word 文档(DOCX 文件) | 50 MB |
PDF 文件 | 50 MB |
文本文件 | 10 MB |
可以将 RAG Engine 与其他文档类型搭配使用,但可能会生成质量不佳的回答。
RAG 支持的数据源
支持以下数据源:
- 上传本地文件:使用
upload_file
进行单文件上传(最多 25 MB),这是一个同步调用。 - Cloud Storage:从 Cloud Storage 导入文件。
Google 云端硬盘:从 Google 云端硬盘导入目录。
必须向服务账号授予导入文件的正确权限。否则,系统不会导入任何文件,也不会显示任何错误消息。如需详细了解文件大小限制,请参阅支持的文档类型。
如需进行身份验证和授予权限,请执行以下操作:
- 前往 Google Cloud 项目的 IAM 页面。
- 选择包括 Google 提供的角色授权。
- 搜索 Vertex AI RAG Data Service Agent 服务账号。
- 点击云端硬盘文件夹上的共享,然后与服务账号共享。
- 向服务账号授予 Google 云端硬盘文件夹或文件的
Viewer
权限。Google 云端硬盘资源 ID 可在网址中找到。
Slack:使用数据连接器从 Slack 导入文件。
Jira:使用数据连接器从 Jira 导入文件。
如需了解详情,请参阅 RAG API 参考文档。
微调 RAG 转换
注入文档后,RAG Engine 会运行一组转换,以便为索引编制做好数据准备。您可以使用以下参数控制用例:
参数 | 说明 |
---|---|
chunk_size |
将文档注入到索引后,系统会将其拆分为多个块。chunk_size 参数(以词元为单位)指定块的大小。默认块大小为 1,024 个词元。 |
chunk_overlap |
默认情况下,文档会被拆分为有一定重叠度的块,以提高相关性和检索质量。默认块重叠为 200 个词元。 |
块越小意味着嵌入越精确。较大的块大小意味着嵌入可能更通用,但可能会错过特定细节。
例如,如果您将 200 个字词(而不是 1,000 个字词)转换为相同维度的嵌入数组,可能会丢失细节。这也是考虑模型上下文长度限制的一个很好示例。大文本块可能无法放入小窗口模型中。
RAG 配额
对于使用 RAG Engine 执行检索增强生成 (RAG) 的每项服务,都适用以下配额,配额以每分钟请求数 (RPM) 为单位。服务 | 配额 | 指标 |
---|---|---|
RAG 引擎数据管理 API | 60 RPM | VertexRagDataService requests per minute per region |
RetrievalContexts API |
1,500 RPM | VertexRagService retrieve requests per minute per region |
base_model: textembedding-gecko |
1,500 RPM | Online prediction requests per base model per minute per region per base_model 您可以指定的其他过滤条件是 base_model: textembedding-gecko |
服务 | 限制 | 指标 |
---|---|---|
并发 ImportRagFiles 请求 |
3 RPM | VertexRagService concurrent import requests per region |
每个 ImportRagFiles 请求的文件数上限 |
10000 | VertexRagService import rag files requests per region |
如需了解更多速率限制和配额,请参阅 Vertex AI 上的生成式 AI 速率限制。
检索参数
下表包含检索参数:
参数 | 说明 |
---|---|
similarity_top_k |
控制检索的上下文的最大数量。 |
vector_distance_threshold |
仅考虑距离小于阈值的上下文。 |
管理 RAG 知识库(语料库)
本部分介绍了如何通过执行索引管理和文件管理来管理 RAG 任务的语料库。
语料库管理
语料库(也称为索引)是文档或信息来源的集合。可以查询语料库,以检索生成回答所需的相关上下文。首次创建语料库时,此过程可能需要额外一分钟。
支持以下语料库操作:
操作 | 说明 | 参数 | 示例 |
---|---|---|---|
创建 RAG 语料库。 | 创建索引以导入或上传文档。 | 创建参数 | 创建示例 |
更新 RAG 语料库。 | 更新之前创建的索引以导入或上传文档。 | 更新参数 | 更新示例 |
列出 RAG 语料库。 | 列出所有索引。 | 列表参数 | 列表示例 |
获取 RAG 语料库。 | 获取描述索引的元数据。 | 获取参数 | 获取示例 |
删除 RAG 语料库。 | 删除索引。 | 删除参数 | 删除示例 |
不支持对语料库进行并发操作。如需了解详情,请参阅 RAG API 参考文档。
文件管理
支持以下文件操作:
操作 | 说明 | 参数 | 示例 |
---|---|---|---|
上传 RAG 文件。 | 从本地存储空间上传包含额外信息(用于为 LLM 提供上下文)的文件来生成更准确的回答。 | 上传参数 | 上传示例 |
导入 RAG 文件。 | 将一组文件从其他存储空间导入到存储位置。 | 导入参数 | 导入示例 |
获取 RAG 文件。 | 获取 RAG 文件的详细信息,以供 LLM 使用。 | 获取参数 | 获取示例 |
删除 RAG 文件。 | 从本地存储空间上传包含额外信息(用于为 LLM 提供上下文)的文件来生成更准确的回答。 | 删除参数 | 删除示例 |
如需了解详情,请参阅 RAG API 参考文档。
后续步骤
- 如需了解文件大小限制,请参阅支持的文档类型。
- 如需了解与 RAG Engine 相关的配额,请参阅 RAG Engine 配额。
- 如需了解如何自定义参数,请参阅检索参数。
- 如需详细了解该 RAG API,请参阅 RAG Engine API。
- 如需详细了解接地,请参阅接地概览。
- 如需详细了解接地和 RAG 之间的区别,请参阅使用 RAG 将回答接地。
- 如需详细了解 Vertex AI 上的生成式 AI,请参阅 Vertex AI 上的生成式 AI 概览。
- 如需详细了解 RAG 架构,请参阅使用 Vertex AI 且支持 RAG 的生成式 AI 应用的基础设施。