MCPcopy Index your code
hub / github.com/Spinachead/arg

github.com/Spinachead/arg @main

Chat with this repo
repository ↗ · DeepWiki ↗ · + Follow
398 symbols 1,864 edges 91 files 138 documented · 35%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

RAG - 智能知识库助手

ARG 是一款基于大语言模型的企业级智能知识库问答系统,支持 RAG(检索增强生成)、SQL 数据库查询、多轮对话等功能。

功能特性

  • 智能问答:基于 RAG 技术,结合企业知识库提供精准回答
  • SQL 查询:支持自然语言转 SQL,自动查询数据库
  • 多轮对话:支持上下文感知的连续对话
  • 知识库管理:支持多种文档格式(PDF、Word、Excel、图片等)的导入和管理
  • MCP 集成:支持 Model Context Protocol,可扩展外部工具能力
  • 用户认证:支持密码登录和会话管理
  • 流式输出:实时响应,提升用户体验

技术架构

核心框架

组件 技术栈 说明
前端界面 Chainlit Python 原生 AI 对话界面框架
工作流编排 LangGraph 构建复杂 LLM 工作流
LLM 调用 LangChain 大语言模型统一接口
向量数据库 Qdrant / ChromaDB / FAISS 文档向量存储与检索
关系数据库 PostgreSQL 用户数据、会话记录存储
文档解析 unstructured + OCR 多格式文档解析

主要依赖

Python 3.10+
chainlit >= 1.0.0
langchain >= 1.0.0
langgraph
qdrant-client
chromadb
sqlalchemy
fastapi

完整依赖列表见 requirements.txt

快速开始

环境要求

  • Python 3.10+
  • Docker & Docker Compose(推荐)
  • PostgreSQL 15+
  • Qdrant(向量数据库)

1. 克隆项目

git clone <your-repo-url>
cd arg

2. 配置环境变量

复制环境变量模板:

cp app/.env.example app/.env

编辑 app/.env 文件,配置以下关键参数:

# 数据库配置
DATABASE_URL=postgresql+asyncpg://postgres:your_password@localhost:5432/arg

# LLM API 密钥(至少配置一个)
DASHSCOPE_API_KEY=sk-your-dashscope-key      # 阿里云通义千问
DEEPSEEK_API_KEY=sk-your-deepseek-key          # DeepSeek
OPENAI_API_KEY=sk-your-openai-key              # OpenAI(可选)

# 默认模型
DEFAULT_LLM_MODEL=qwen-max                     # 或 deepseek-chat

# 认证密钥
CHAINLIT_AUTH_SECRET=your-secret-key
AUTH_SECRET_KEY=your-auth-secret

# 管理员密码
ADMIN_PASS=your-admin-password

3. 本地开发运行

方式一:Conda 环境(推荐开发使用)

# 创建环境
conda create -n arg python=3.10
conda activate arg

# 安装依赖
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple

# 设置项目根目录(Windows)
$env:CHATCHAT_ROOT="e:\pythonPro\arg\app"

# 设置项目根目录(Linux/Mac)
export CHATCHAT_ROOT=/path/to/arg/app

# 启动应用
cd app
python -m chainlit run app.py -w

应用将在 http://localhost:8000 启动,-w 参数支持热重载。

方式二:Docker Compose(推荐生产使用)

# 构建并启动所有服务
docker-compose up -d --build

# 查看日志
docker-compose logs -f app

# 查看最近100行日志
docker-compose logs --tail=100 app

服务启动后访问 http://localhost:8000

生产部署

服务器环境要求

  • Linux 服务器(Ubuntu 20.04+ / CentOS 7+)
  • Docker 20.10+ 和 Docker Compose
  • 域名(可选,用于 HTTPS)
  • 宝塔面板(推荐,用于 Nginx 反向代理管理)

部署步骤

1. 服务器准备

# 创建部署目录
mkdir -p /opt/arg_app
cd /opt/arg_app

# 上传项目文件(通过 git 或 scp)
git clone <your-repo-url> .

2. 配置生产环境变量

# 编辑生产环境配置
vim app/.env

关键配置项:

# 数据库使用 Docker 内网地址
DATABASE_URL=postgresql+asyncpg://postgres:postgres@db:5432/langchain_chatchat

# Qdrant 向量数据库地址
QDRANT_HOST=qdrant
QDRANT_PORT=6333

# 生产环境关闭调试
LANGSMITH_TRACING=false

3. 启动服务

docker-compose up -d
  1. 申请 SSL 证书并开启 HTTPS

4. 验证部署

# 检查容器状态
docker-compose ps

# 查看应用日志
docker logs -f arg_app

访问 https://rag.yourdomain.com 验证服务是否正常。

Docker 镜像构建与推送(可选)

如需使用私有镜像仓库:

# 1. 登录镜像仓库
docker login your-registry.com

# 2. 构建镜像
docker build -t arg-app:latest .

# 3. 标记镜像
docker tag arg-app:latest your-registry.com/library/arg-app:latest

# 4. 推送镜像
docker push your-registry.com/library/arg-app:latest

# 5. 服务器拉取运行
docker pull your-registry.com/library/arg-app:latest

项目结构

arg/
├── app/                          # 应用主目录
│   ├── app.py                    # 程序入口
│   ├── core/                     # 核心逻辑
│   │   ├── state_graph/          # LangGraph 工作流
│   │   │   ├── nodes/            # 工作流节点
│   │   │   ├── states/           # 状态定义
│   │   │   ├── main_graph.py     # 主工作流
│   │   │   ├── knowledge_query_graph.py  # 知识库查询子图
│   │   │   └── sql_query_graph.py        # SQL 查询子图
│   │   └── prompts.py            # 提示词模板
│   ├── db/                       # 数据库相关
│   │   ├── models/               # SQLAlchemy 模型
│   │   └── repository/           # 数据访问层
│   ├── file_rag/                 # 文档处理与 RAG
│   │   ├── document_loaders/     # 文档加载器
│   │   ├── retrievers/           # 向量检索
│   │   └── text_splitter/        # 文本分割
│   ├── knowledge_base/           # 知识库管理
│   ├── logic/                    # 业务逻辑
│   ├── data/                     # 数据目录
│   └── .env                      # 环境变量
├── docker-compose.yml            # Docker 编排配置
├── Dockerfile                    # 应用镜像构建
└── requirements.txt              # Python 依赖

常用命令

# Docker 操作
docker-compose up -d              # 后台启动
docker-compose down               # 停止服务
docker-compose restart app        # 重启应用
docker-compose logs -f app        # 实时查看日志
docker exec -it arg_app bash      # 进入容器

# 数据库操作
docker exec -it arg_postgres psql -U postgres -d arg

# 本地开发
python -m chainlit run app.py -w  # 热重载模式

贡献指南

欢迎提交 Issue 和 Pull Request!

许可证

MIT License

Core symbols most depended-on inside this repo

get
called by 110
app/knowledge_base/kb_cache/base.py
build_logger
called by 16
app/utils.py
get_service_by_name
called by 12
app/knowledge_base/kb_service/base.py
acquire
called by 12
app/knowledge_base/kb_cache/base.py
get_default_embedding
called by 11
app/utils.py
keys
called by 10
app/knowledge_base/kb_cache/base.py
set
called by 10
app/knowledge_base/kb_cache/base.py
save_vector_store
called by 9
app/knowledge_base/kb_service/base.py

Shape

Method 172
Function 156
Class 68
Route 2

Languages

Python99%
TypeScript1%

Modules by API surface

app/knowledge_base/kb_service/base.py40 symbols
app/knowledge_base/kb_utils.py25 symbols
app/utils.py22 symbols
app/pydantic_settings_file.py21 symbols
app/knowledge_base/kb_cache/base.py17 symbols
app/knowledge_base/kb_service/faiss_kb_service.py16 symbols
app/knowledge_base/kb_service/chromadb_kb_service.py16 symbols
app/knowledge_base/kb_cache/faiss_cache.py15 symbols
app/knowledge_base/kb_service/default_kb_service.py12 symbols
app/db/repository/knowledge_file_repository.py11 symbols
app/app.py11 symbols
app/weather.py8 symbols

Datastores touched

langchain_chatchatDatabase · 1 repos

For agents

$ claude mcp add arg \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact