文档问答API

基于FastAPI实现的文档问答系统,支持PDF和CSV文件上传、向量存储及自然语言查询。

  • by bettehub
  • Python
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 bettehub/laas-rag-mcp

使用说明

RAG API

该项目是基于FastAPI的API服务器,实现了基于文档的问答系统。

功能

  1. 上载文档并保存矢量存储

    • PDF和CSV文件支持
    • 自动拆分和嵌入文档
    • 保存到Chroma矢量商店
  2. 搜索文档

    • 基于自然语言查询的搜索
    • 基于相似度的文档搜索

安装方法

  1. 安装所需的软件包:
pip install -r requirements.txt
  1. 设置环境变量:
export OPENAI_API_KEY="your-api-key"

执行方法

python main.py

服务器http://localhost:8000在中运行。

API端点

  1. 上载文档

    • POST/上传
    • multipart/form-data格式上载文件
    • 支持格式:PDF、CSV
    • 参数:
      • files:要上载的文件列表(必需)
      • vector_store_dir:存储矢量存储的目录路径(可选,默认为“vector_store”)
  2. 搜索文档

    • POST/查询
    • form-data格式传递参数
    • 参数:
      • query:搜索查询(必需)
      • vector_store_dir:矢量商店目录路径(可选,默认为“vector_store”)
      • k:要搜索的文档数(选择,默认值:2)

API文档

FastAPI的自动生成文档可在以下URL中找到:

  • http://localhost:8000/docs
  • http://localhost:8000/redoc

在矢量商店之前

要在其他项目中重复使用存储在矢量存储库中的文件,可以执行以下操作:

  1. 将所需的矢量存储目录复制到其他项目的同一路径。
  2. 其他项目也必须安装以下软件包:
    • langchain色度
    • 兰开夏
    • 其他必要的依赖性软件包
  3. 必须使用相同的嵌入模型(OpenAI Embeddings)。
  4. 必须正确设置所需的环境变量(例如OpenAI API密钥)。

将矢量存储迁移到其他项目时,只需复制目录即可。这将同时保留文档的嵌入和元数据,以便在新项目中使用。

使用多个矢量商店

该项目旨在同时使用多个矢量商店。每个矢量存储库存储在不同的目录中,调用API时 vector_store_dir 可以通过参数指定所需的矢量存储。

例如,您可以为不同的项目或文档集创建和管理单独的矢量存储:

project1_docs -> vector_store_project1
project2_docs -> vector_store_project2
research_papers -> vector_store_research

这允许您独立管理和搜索每个文档集。