Skip to content

Orangon/GeoAgent

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

GeoAgent 项目

项目概述

GeoAgent 是一个基于Retrieval-Augmented Generation (RAG) 技术的地理信息问答系统,提供文档管理、向量数据库管理以及智能问答功能。

功能特性

  • 文档管理:支持CSV、JSON、TXT格式文件的上传、下载和删除
  • 向量数据库管理:支持创建、添加文件、删除和查询向量数据库
  • 智能问答:基于RAG技术,结合向量检索和生成模型,提供准确的地理信息问答服务
  • 多模型支持:支持多种嵌入模型和聊天模型,可根据需求灵活配置
  • 对话记忆:支持多轮对话和会话管理
  • MCP工具集成:支持外部工具调用

快速开始

  1. 确保已安装Python 3.9+,建议版本 3.11
  2. 克隆本项目:
    git clone https://github.com/Orangon/GeoAgent.git
  3. 安装依赖:
    pip install -r requirements.txt
  4. 通过命令行或者添加.env文件配置环境变量:
    export OPENAI_API_KEY=your_api_key
    export OPENAI_API_BASE=your_api_base
    export EMBEDDING_API_URL=your_embedding_api_url
  5. 启动服务:
    python run.py

配置项详解

环境变量

  • OPENAI_API_KEY: OpenAI API密钥(或兼容OpenAI API格式的密钥)
  • OPENAI_API_BASE: OpenAI API基础URL
  • EMBEDDING_API_URL: 嵌入模型API URL

模型配置(model.yaml文件,可扩展)

嵌入模型:

  • llama3.3-70b-instruct
  • llama3.1-70b-instruct
  • text-embedding-v3

聊天模型:

  • qwen-turbo
  • deepseek-v3

API文档

数据库管理API

创建数据库

  • 方法:POST
  • 路径:/create_db
  • 参数:
    • model_name: 嵌入模型名称
    • db_name: 数据库名称
    • files: 要上传的文件列表(可选)

添加文件到数据库

  • 方法:POST
  • 路径:/databases/add
  • 参数:
    • db_name: 数据库名称
    • files: 要添加的文件列表

删除数据库

  • 方法:DELETE
  • 路径:/databases/{db_name}
  • 参数:
    • db_name: 数据库名称

获取数据库列表

  • 方法:GET
  • 路径:/databases

文档管理API

上传文档

  • 方法:POST
  • 路径:/databases/add
  • 参数:
    • files: 要上传的文件列表

下载文档

  • 方法:GET
  • 路径:/documents/download/{filename}
  • 参数:
    • filename: 文件名

删除文档

  • 方法:DELETE
  • 路径:/documents/delete/{filename}
  • 参数:
    • filename: 文件名

列出文档

  • 方法:GET
  • 路径:/documents

智能问答API

发起问答

  • 方法:POST
  • 路径:/ask
  • 参数:
    • query: 用户查询
    • db_name: 数据库名称
    • embed_model_name: 嵌入模型名称(可选)
    • chat_model_name: 聊天模型名称(可选)
    • use_api: 是否使用API(可选,默认True)

多轮对话

  • 方法:POST
  • 路径:/chat
  • 参数:
    • prompt: 系统提示词
    • query: 用户查询
    • session_id: 会话ID(可选)
    • chat_model_name: 聊天模型名称(可选)
    • use_memory: 是否使用记忆功能(可选,默认True)

获取会话列表

  • 方法:GET
  • 路径:/chat/sessions

删除会话

  • 方法:DELETE
  • 路径:/chat/sessions/{session_id}
  • 参数:
    • session_id: 会话ID

项目结构

GeoAgent/
├── .gitignore
├── Dockerfile
├── GeoRAGApp.py  # 主应用程序入口文件
├── models.yaml  # 模型配置文件,定义了可用的嵌入模型和聊天模型
├── README.md
├── requirements.txt  # 依赖包列表
├── run_docker.sh  # 运行Docker容器的脚本
├── app/  # 应用程序主目录
│   ├── __init__.py
│   ├── dao/  # 数据访问层
│   │   ├── __init__.py
│   │   ├── DataBase.py  # 数据库操作
│   │   ├── FlexibleVectorDB.py  # 灵活的向量数据库实现
│   │   ├── LocalVectorDB.py  # 本地向量数据库实现(Ollama)
│   │   └── VectorDB.py  # 向量数据库抽象基类
│   ├── routers/  # API路由
│   │   ├── __init__.py
│   │   ├── chat.py  # 聊天相关路由
│   │   ├── databases.py  # 数据库管理路由
│   │   ├── documents.py  # 文档管理路由
│   │   ├── health.py  # 健康检查路由
│   │   └── models.py  # 模型管理路由
│   ├── services/  # 业务逻辑层
│   │   ├── __init__.py
│   │   ├── base_service.py  # 基础服务类
│   │   ├── chat_service.py  # 聊天服务
│   │   ├── database_service.py  # 数据库管理服务
│   │   ├── document_service.py  # 文档管理服务
│   │   ├── mcp_service.py  # MCP工具服务
│   │   ├── model_service.py  # 模型管理服务
│   │   └── rag_service.py  # RAG问答服务
│   └── utils/  # 工具类
│       ├── __init__.py
│       ├── config.py  # 配置管理
│       ├── dependencies.py  # 依赖注入
│       ├── exceptions.py  # 异常处理
│       ├── models.py  # 数据模型
│       └── response.py  # 响应格式化
└── database/  # 数据库存储目录
└── documents/  # 文档存储目录

服务架构说明

核心服务

DatabaseService (数据库管理服务)

负责向量数据库的创建、删除、查询和文件管理:

  • 创建向量数据库
  • 向已有数据库添加文件
  • 删除数据库
  • 获取数据库列表
  • 管理已加载的向量数据库实例

DocumentService (文档管理服务)

负责文档的上传、下载和删除等管理功能:

  • 获取文档列表
  • 下载文档
  • 删除文档
  • 管理上传目录

RAGService (RAG问答服务)

负责RAG智能问答和纯对话功能:

  • 基于向量数据库的智能问答
  • 支持API和本地模型
  • 支持多种聊天模型

ChatService (聊天服务)

负责聊天会话管理和对话记忆功能:

  • 会话创建和管理
  • 对话历史记录维护
  • 会话清理机制
  • 多轮对话支持

ModelService (模型管理服务)

负责管理嵌入模型和聊天模型:

  • 获取可用模型列表
  • 验证模型有效性
  • 提供默认模型配置

MCPService (MCP工具服务)

负责MCP工具的初始化和管理:

  • MCP工具加载
  • 外部工具集成
  • 工具调用支持

数据访问层 (DAO)

  • VectorDB: 向量数据库抽象基类
  • FlexibleVectorDB: 灵活的向量数据库实现
  • LocalVectorDB: 本地向量数据库实现
  • DataBase: 数据库操作接口

工具类

  • config: 配置管理
  • dependencies: 依赖注入
  • exceptions: 异常处理
  • models: 数据模型定义
  • response: 响应格式化

技术栈

  • Python 3.11
  • FastAPI
  • LangChain (langchain, langchain-chroma, langchain-openai等)
  • 向量数据库:Chroma
  • 嵌入模型:llama3.3-70b-instruct, llama3.1-70b-instruct, text-embedding-v3
  • 聊天模型:qwen-turbo, deepseek-v3

About

用于GIS分析的大语言模型智能体,集成了检索增强生成和MCP工具。A LLM agent for GIS analysis, integrated with RAG and MCP tools.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages