本项目以异步、可扩展的方式将Langchain与FastAPI集成,提供了一个文档索引和检索的框架,使用PostgreSQL/pgvector。
文件按file_id组织成嵌入向量。主要用例是与LibreChat集成,但这个简单的API可用于任何基于ID的场景。
使用ID方法的主要原因是在文件级别处理嵌入向量。当与存储在数据库中的文件元数据结合使用时(如LibreChat所做的那样),这使得查询更有针对性。
随着时间的推移,API将不断发展,采用不同的查询/重新排序方法、嵌入模型和向量存储。
.env文件docker compose up(同时启动RAG API)
docker compose -f ./db-compose.yaml updocker compose up(同时启动PSQL/pgvector)
docker compose -f ./api-compose.yaml upDB_HOST设置为正确的数据库主机名pip install -r requirements.txt uvicorn main:app
运行应用程序需要以下环境变量:
RAG_OPENAI_API_KEY:OpenAI API嵌入的API密钥(如果使用默认设置)。
OPENAI_API_KEY也可以使用,但RAG_OPENAI_API_KEY会覆盖它,以避免与LibreChat设置冲突。RAG_OPENAI_BASEURL:(可选)OpenAI API嵌入的基础URL
RAG_OPENAI_PROXY:(可选)OpenAI API嵌入的代理
VECTOR_DB_TYPE:(可选)选择向量数据库类型,默认为pgvector。
POSTGRES_DB:(可选)PostgreSQL数据库名称,当VECTOR_DB_TYPE=pgvector时使用。
POSTGRES_USER:(可选)连接PostgreSQL数据库的用户名。
POSTGRES_PASSWORD:(可选)连接PostgreSQL数据库 的密码。
DB_HOST:(可选)PostgreSQL数据库服务器的主机名或IP地址。
DB_PORT:(可选)PostgreSQL数据库服务器的端口号。
RAG_HOST:(可选)API服务器将运行的主机名或IP地址。默认为"0.0.0.0"
RAG_PORT:(可选)API服务器将运行的端口号。默认为8000端口。
JWT_SECRET:(可选)用于验证请求JWT令牌的密钥。
COLLECTION_NAME:(可选)向量存储中集合的名称。默认值为"testcollection"。
CHUNK_SIZE:(可选)文本处理的块大小。默认值为"1500"。
CHUNK_OVERLAP:(可选)文本处理期间块之间的重叠。默认值为"100"。
RAG_UPLOAD_DIR:(可选)上传文件存储的目录。默认值为"./uploads/"。
PDF_EXTRACT_IMAGES:(可选)一个布尔值,指示是否从PDF文件中提取图像。默认值为"False"。
DEBUG_RAG_API:(可选)设置为"True"以在服务器控制台显示更详细的日志输出,并启用postgresql数据库路由
CONSOLE_JSON:(可选)设置为"True"以 JSON 格式记录日志,用于云日志聚合
EMBEDDINGS_PROVIDER:(可选)可选择"openai"、"azure"、"huggingface"、"huggingfacetei"或"ollama",其中"huggingface"使用 sentence_transformers;默认为"openai"
EMBEDDINGS_MODEL:(可选)从配置的提供商 中设置有效的嵌入模型。
RAG_AZURE_OPENAI_API_VERSION:(可选)默认为 2023-05-15。Azure OpenAI API 的版本。
RAG_AZURE_OPENAI_API_KEY:(可选)Azure OpenAI 服务的 API 密钥。
AZURE_OPENAI_API_KEY 也可以使用,但 RAG_AZURE_OPENAI_API_KEY 将覆盖它,以避免与 LibreChat 设置冲突。RAG_AZURE_OPENAI_ENDPOINT:(可选)Azure OpenAI 服务的端点 URL,包括资源。
https://YOUR_RESOURCE_NAME.openai.azure.com。AZURE_OPENAI_ENDPOINT 也可以使用,但 RAG_AZURE_OPENAI_ENDPOINT 将覆盖它,以避免与 LibreChat 设置冲突。HF_TOKEN:(可选)如果使用 huggingface 选项时需要。
OLLAMA_BASE_URL:(可选)默认为 http://ollama:11434。
在运行应用程序之前,请确保设置这些环境变量。您可以在 .env 文件中或作为系统环境变量进行设置。
除了使用默认的 pgvector,我们还可以使用 Atlas MongoDB 作为向量数据库。要实现这一点,请设置以下环境变量:
VECTOR_DB_TYPE=atlas-mongo ATLAS_MONGO_DB_URI=<mongodb+srv://...> MONGO_VECTOR_COLLECTION=<collection name>
ATLAS_MONGO_DB_URI 可以与 LibreChat 使用的相同或不同。即使相同,$MONGO_VECTOR_COLLECTION 集合也需要是一个全新的集合,与 LibreChat 使用的所有集合分开。此外,为 $MONGO_VECTOR_COLLECTION 创建一个向量搜索索引,使用以下 JSON:
{ "fields": [ { "numDimensions": 1536, "path": "embedding", "similarity": "cosine", "type": "vector" }, { "path": "file_id", "type": "filter" } ] }
按照 四种记录方法 之一创建向量索引。
确保您的 RDS Postgres 实例符合以下要求:
pgvector 扩展版本 0.5.0 可用于在所有适用的 AWS 区域(包括 AWS GovCloud(美国)区域)中运行 PostgreSQL 15.4-R2 及更高版本、14.9-R2 及更高版本、13.12-R2 及更高版本和 12.16-R2 及更高版本的 Amazon RDS 数据库实例。
要使用 RAG API 设置 RDS Postgres,您可以按照以下步骤操作:
使用提供的 AWS 文档 创建 RDS 实例/集群。
使用 RDS 控制台或您的 IaC 解决方案输出中的终端节点连接字符串登录到 RDS 集群。
登录是通过主用户进行的。
为rag_api创建一个专用数据库:
create database rag_api;
为该数据库创建一个专用用户/角色:
create role rag;
切换到你刚刚创建的数据库:\c rag_api
启用Vector扩展:create extension vector;
使用上面提供的文档设置连接到RDS Postgres实例/集群的连接字符串。
注意事项:
create role x with superuser;运行以下命令安装pre-commit格式化工具,它使用black代码格式化器:
pip install pre-commit pre-commit install


AI一键生成PPT,就用博思AIPPT!
博思AIPPT,新一代的AI生成PPT平台,支持智能生成PPT、AI美化PPT、文本&链接生成PPT、导入Word/PDF/Markdown文档生成PPT等,内置海量精美PPT模板,涵盖商务、教育、科技等不同风格,同时针对每个页面提供多种版式,一键自适应切换,完美适配各种办 公场景。


AI赋能电商视觉革命,一站式智能商拍平台
潮际好麦深耕服装行业,是国内AI试衣效果最好的软件。使用先进AIGC能力为电商卖家批量提供优质的、低成本的商拍图。合作品牌有Shein、Lazada、安踏、百丽等65个国内外头部品牌,以及国内10万+淘宝、天猫、京东等主流平台的品牌商家,为卖家节省将近85%的出图成本,提升约3倍出图效率,让品牌能够快速上架。


企业专属的AI法律顾问
iTerms是法大大集团旗下法律子品牌,基于最先进的大语言模型(LLM)、专业的法律知识库和强大的智能体架构,帮助企业扫清合规障碍,筑牢风控防线,成为您企业专属的AI法律顾问。


稳定高效的流量提升解决方案,助力品牌曝光
稳定高效的流量提升解决方案,助力品牌曝光


最新版Sora2模型免费使用,一键生成无水印视频
最新版Sora2模型免费使用,一键生成无水印视频


实时语音翻译/同声传译工具
Transly是一个多场景的AI大语言模型驱动的同声传译、专业翻译助手,它拥有超精准的音频识别翻译能力,几乎零延迟的使用体验和支持多国语言可以让你带它走遍全球,无论你是留学生、商务人士、韩剧美剧爱好者,还是出国游玩、多国会议、跨国追星等等,都可以满足你所有需要同传的场景需求,线上线下通用,扫除语言障 碍,让全世界的语言交流不再有国界。


选题、配图、成文,一站式创作,让内容运营更高效
讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。


AI辅助编程,代码自动修复
Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。


最强AI数据分析助手
小浣熊家族Raccoon,您的AI智能助手,致力于通过先进的人工智能技术,为用户提供高效、便捷的智能服务。无论是日常咨询还是专业问题解答,小浣熊都能以快速、准确的响应满足您的需求,让您的生活更加智能便捷。


像人一样思考的AI智能体
imini 是一款超级AI智能体,能根据人类指令,自主思考、自主完成、并且交付结果的AI智能体。
最新AI工具、AI资讯
独家AI资源、AI项目落地

微信扫一扫关注公众号