适用于 RAG 的 LlamaIndex on Vertex AI 概览

适用于 RAG 的 LlamaIndex on Vertex AI 是一个数据框架,用于开发上下文增强型大语言模型 (LLM) 应用。当您对数据应用 LLM 时,就会发生上下文增强。这实现了检索增强生成 (RAG)。

LLM 的一个常见问题是,它们不理解私有知识,也就是您的组织的数据。借助适用于 RAG 的 LlamaIndex on Vertex AI,您可以使用更多私密信息丰富 LLM 上下文,因为该模型可以减少幻觉并更准确地回答问题。

通过将更多知识来源与 LLM 所拥有的现有知识相结合,可以提供更好的上下文。改进的上下文与查询一起可提高 LLM 的回答质量。

以下概念对于理解适用于 RAG 的 LlamaIndex on Vertex AI 至关重要。这些概念按检索增强生成 (RAG) 过程的顺序列出。

  1. 数据注入:从不同数据源注入数据。例如,本地文件、Cloud Storage 和 Google 云端硬盘。

  2. 数据转换:转换数据以准备进行索引编制。例如,数据会被拆分为多个块。

  3. 嵌入:字词或文本片段的数值表示法。这些数字捕获了文本的语义含义和上下文。相似或相关的字词或文本往往具有类似的嵌入,这意味着它们在高维向量空间中彼此更靠近。

  4. 数据索引编制:适用于 RAG 的 LlamaIndex on Vertex AI 会创建一个称为语料库的索引。索引会为知识库构建结构,以便针对搜索进行优化。例如,索引就像是大型参考书的详细目录。

  5. 检索:当用户提问或提供问题时,Vertex AI for RAG 上的 LlamaIndex 中的检索组件会搜索其知识库,以查找与查询相关的信息。

  6. 生成:检索到的信息将成为添加到原始用户查询的上下文(作为生成式 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 云端硬盘导入目录。

    必须向服务账号授予正确的权限才能导入文件。否则,系统不会导入任何文件,也不会显示任何错误消息。如需详细了解文件大小限制,请参阅支持的文档类型

    如需进行身份验证并授予权限,请执行以下操作:

    1. 前往 Google Cloud 项目的 IAM 页面
    2. 选择包括 Google 提供的角色授权
    3. 搜索 Vertex AI RAG Data Service Agent 服务账号。
    4. 点击云端硬盘文件夹上的共享,然后与服务账号共享。
    5. 向服务账号授予 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 参考文档

文件管理

支持以下文件操作:

如需了解详情,请参阅 RAG API 参考文档

后续步骤