如何用LangChain查询Mongo集合?是否有类SQLDatabaseChain的工具?
用LangChain查询MongoDB集合的替代方案
LangChain提供了适配MongoDB的MongoDBChain,功能和SQLDatabaseChain类似,能将自然语言查询转为MongoDB查询语句并执行,以下是具体实现步骤:
安装依赖
确保安装必要的包,包括LangChain核心库、MongoDB驱动和社区集成包:pip install langchain pymongo langchain-community初始化MongoDB连接
先建立到MongoDB实例的连接,指定目标数据库和集合:from pymongo import MongoClient # 替换为你的MongoDB连接字符串 client = MongoClient("mongodb://localhost:27017/") db = client["你的数据库名"] collection = db["你的集合名"]创建并运行MongoDBChain
结合大语言模型(比如OpenAI)初始化链,即可用自然语言查询集合:from langchain_community.chains import MongoDBChain from langchain_openai import OpenAI # 初始化LLM,替换为你的API密钥 llm = OpenAI(api_key="你的OpenAI密钥", temperature=0) # 创建MongoDB链 chain = MongoDBChain.from_llm(llm, collection=collection, verbose=True) # 执行自然语言查询 result = chain.run("找出所有注册时间在2023年之后的用户") print(result)自定义优化
你可以通过自定义提示词来调整查询生成逻辑,比如指定返回字段、过滤规则,或者要求返回格式化的结果。例如修改链的提示模板:from langchain.prompts import PromptTemplate custom_prompt = PromptTemplate( input_variables=["question", "collection_info"], template="根据MongoDB集合信息{collection_info},将用户问题{question}转为MongoDB查询语句,只返回查询结果的JSON格式,不要额外解释。" ) chain = MongoDBChain.from_llm(llm, collection=collection, prompt=custom_prompt, verbose=True)
注意:如果使用LangChain v0.1及以上版本,MongoDB相关工具链已移至langchain-community包中,导入时需对应调整路径。
内容的提问来源于stack exchange,提问作者Naxi
相关产品推荐
相关产品推荐

