GeoRAG 是一个基于Retrieval-Augmented Generation (RAG) 技术的地理信息问答系统,提供文档管理、向量数据库管理以及智能问答功能。
- 文档管理:支持CSV、JSON、TXT格式文件的上传、下载和删除
- 向量数据库管理:支持创建、添加文件、删除和查询向量数据库
- 智能问答:基于RAG技术,结合向量检索和生成模型,提供准确的地理信息问答服务
- 多模型支持:支持多种嵌入模型和聊天模型,可根据需求灵活配置
- 确保已安装Python 3.9+,建议版本 3.11
- 克隆本项目:
git clone https://github.com/your-repo/GeoRAG.git
- 安装依赖:
pip install -r requirements.txt
- 通过命令行或者添加.env文件配置环境变量:
export OPENAI_API_KEY=your_api_key export OPENAI_API_BASE=your_api_base export EMBEDDING_API_URL=your_embedding_api_url
- 启动服务:
python GeoRAGApp.py
- 上传文档:POST /databases/add
- 下载文档:GET /documents/download/{filename}
- 删除文档:DELETE /documents/delete/{filename}
- 列出文档:GET /documents
- 创建数据库:POST /create_db
- 添加文件到数据库:POST /databases/add
- 删除数据库:DELETE /databases/{db_name}
- 获取数据库列表:GET /databases
- 发起问答:POST /ask
OPENAI_API_KEY: OpenAI API密钥OPENAI_API_BASE: OpenAI API基础URLEMBEDDING_API_URL: 嵌入模型API URL
嵌入模型:
- llama3.3-70b-instruct
- llama3.1-70b-instruct
- text-embedding-v3
聊天模型:
- qwen-turbo
- deepseek-v3
- 方法:POST
- 路径:/create_db
- 参数:
- model_name: 嵌入模型名称
- db_name: 数据库名称
- files: 要上传的文件列表(可选)
- 方法:POST
- 路径:/databases/add
- 参数:
- db_name: 数据库名称
- files: 要添加的文件列表
- 方法:DELETE
- 路径:/databases/{db_name}
- 参数:
- db_name: 数据库名称
- 方法:GET
- 路径:/databases
- 方法:POST
- 路径:/databases/add
- 参数:
- files: 要上传的文件列表
- 方法:GET
- 路径:/documents/download/{filename}
- 参数:
- filename: 文件名
- 方法:DELETE
- 路径:/documents/delete/{filename}
- 参数:
- filename: 文件名
- 方法:GET
- 路径:/documents
- 方法:POST
- 路径:/ask
- 参数:
- query: 用户查询
- db_name: 数据库名称
- embed_model_name: 嵌入模型名称(可选)
- chat_model_name: 聊天模型名称(可选)
- use_api: 是否使用API(可选,默认True)
GeoRAG/
├── .gitignore
├── Dockerfile
├── GeoRAGApp.py # 主应用程序入口文件
├── models.yaml # 模型配置文件,定义了可用的嵌入模型和聊天模型
├── README.md
├── requirements.txt # 依赖包列表
├── run_docker.sh # 运行Docker容器的脚本
└── GeoRAGService/ # 服务模块目录
├── __init__.py
├── FlexibleVectorDB.py # 灵活的向量数据库实现
├── georag_service.py # 核心服务逻辑
├── LocalVectorDB.py # 本地向量数据库实现(Ollama)
├── RAGAgent.py # RAG代理类,处理智能问答逻辑
├── VectorDB.py # 向量数据库抽象基类
└── database/ # 数据库存储目录
└── documents/ # 文档存储目录