适用于 RAG 的 LlamaIndex on Vertex AI 是一个数据框架,用于开发上下文增强型大语言模型 (LLM) 应用。当您对数据应用 LLM 时,就会发生上下文增强。这实现了检索增强生成 (RAG)。
LLM 的一个常见问题是,它们不理解私有知识,也就是您的组织的数据。借助适用于 RAG 的 LlamaIndex on Vertex AI,您可以使用更多私密信息丰富 LLM 上下文,因为该模型可以减少幻觉并更准确地回答问题。
通过将更多知识来源与 LLM 所拥有的现有知识相结合,可以提供更好的上下文。改进的上下文与查询一起可提高 LLM 的回答质量。
以下概念对于理解适用于 RAG 的 LlamaIndex on Vertex AI 至关重要。这些概念按检索增强生成 (RAG) 过程的顺序列出。
数据注入:从不同数据源注入数据。例如,本地文件、Cloud Storage 和 Google 云端硬盘。
数据转换:转换数据以准备进行索引编制。例如,数据会被拆分为多个块。
嵌入:字词或文本片段的数值表示法。这些数字捕获了文本的语义含义和上下文。相似或相关的字词或文本往往具有类似的嵌入,这意味着它们在高维向量空间中彼此更靠近。
数据索引编制:适用于 RAG 的 LlamaIndex on Vertex AI 会创建一个称为语料库的索引。索引会为知识库构建结构,以便针对搜索进行优化。例如,索引就像是大型参考书的详细目录。
检索:当用户提问或提供问题时,Vertex AI for RAG 上的 LlamaIndex 中的检索组件会搜索其知识库,以查找与查询相关的信息。
生成:检索到的信息将成为添加到原始用户查询的上下文(作为生成式 AI 模型的指南),以生成确实有依据的相关响应。
支持的模型
本部分列出了支持适用于 RAG 的 LlamaIndex on Vertex AI 的 Google 模型和开放模型。
Gemini 模型
下表列出了支持适用于 RAG 的 LlamaIndex on Vertex AI 的 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 |
开放模型
Google 运营的 Llama 3.1 模型即服务 (MaaS) 端点和您自行部署的开放模型端点支持适用于 RAG 的 LlamaIndex on Vertex AI。
以下代码示例演示了如何使用 Gemini GenerateContent API 创建开放模型实例。
# Create a model instance with Llama 3.1 MaaS endpoint
rag_model = GenerativeModel(
"projects/PROJECT_ID/locations/REGION/publisher/meta/models/llama3-405B-instruct-maas",
tools=[rag_retrieval_tool]
)
# 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]
)
以下代码示例演示了如何使用与 OpenAI 兼容的 ChatCompletions API 生成模型回答。
# Generate a response with Llama 3.1 MaaS endpoint
response = client.chat.completions.create(
model="meta/llama3-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
支持的文档类型
仅支持文本文档。下表显示了文件类型及其文件大小限制:
文件类型 | 文件大小限制 |
---|---|
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 |
可以将 Vertex AI for RAG 上的 LlamaIndex 与其他文档类型搭配使用,但可能会生成质量不佳的回答。
支持的数据源
支持以下数据源:
- 上传本地文件:使用
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 的 LlamaIndex on Vertex AI 会运行一组转换,以便为索引编制做好数据准备。您可以使用以下参数控制用例:
参数 | 说明 |
---|---|
chunk_size |
将文档注入到索引后,系统会将其拆分为多个块。chunk_size 参数(以词元为单位)指定块的大小。默认块大小为 1,024 个词元。 |
chunk_overlap |
默认情况下,文档会被拆分为有一定重叠度的块,以提高相关性和检索质量。默认块重叠为 200 个词元。 |
块越小意味着嵌入越精确。较大的块大小意味着嵌入可能更通用,但可能会错过特定细节。
例如,如果您将 200 个字词(而不是 1,000 个字词)转换为相同维度的嵌入数组,可能会丢失细节。这也是考虑模型上下文长度限制时的一个很好的示例。大文本块可能无法放入小窗口模型中。
检索参数
下表包含检索参数:
参数 | 说明 |
---|---|
similarity_top_k |
控制检索的上下文的最大数量。 |
vector_distance_threshold |
仅考虑距离小于阈值的上下文。 |
管理语料库
本部分介绍了如何通过执行索引管理和文件管理来管理 RAG 任务的语料库。
语料库管理
语料库(也称为索引)是指文档集合或信息来源。可以查询语料库,以检索生成回答所需的相关上下文。首次创建语料库时,此过程可能需要额外的一分钟时间。
创建语料库时,您可以指定以下内容:
- 创建语料库:创建索引以导入或上传文档。
- 删除语料库:删除索引。
- 获取语料库的详细信息:获取描述索引的元数据。
- 列出给定项目中的语料库:列出给定项目中的多个索引。
不支持对语料库执行并发操作。如需了解详情,请参阅 RAG API 参考文档。
文件管理
支持以下文件操作:
- 将本地存储空间中的文件上传到语料库:上传包含额外信息(用于为 LLM 提供上下文)的文件来生成更准确的回答。
- 将文件从其他存储空间注入到语料库:从存储位置导入一组文件。
- 获取文件的详细信息:从索引或索引中的指定文件检索给定查询的相关上下文。
- 列出语料库中的文件:生成索引中的文件列表。
- 从语料库中删除文件:从索引中移除文件。
如需了解详情,请参阅 RAG API 参考文档。
后续步骤
- 如需了解文件大小限制,请参阅支持的文档类型。
- 如需了解与适用于 RAG 的 LlamaIndex on Vertex AI 相关的配额,请参阅适用于 RAG 的 LlamaIndex on Vertex AI 配额。
- 如需了解如何自定义参数,请参阅检索参数。
- 如需详细了解该 RAG API,请参阅适用于 RAG 的 LlamaIndex on Vertex AI。
- 如需详细了解接地,请参阅接地概览。
- 如需详细了解接地和 RAG 之间的区别,请参阅使用 RAG 将回答接地。
- 如需详细了解 Vertex AI 上的生成式 AI,请参阅 Vertex AI 上的生成式 AI 概览。
- 如需详细了解 RAG 架构,请参阅使用 Vertex AI 且支持 RAG 的生成式 AI 应用的基础设施。