Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

📚 企业内部资料问答系统

基于 LangChain + RAG(检索增强生成) 架构的企业内部文档智能问答系统。

✨ 功能特性

  • 📄 多格式支持: PDF、DOCX、TXT、Markdown 等常见文档格式
  • 🔍 语义检索: 基于向量相似度的智能文档检索
  • 🤖 双 LLM 后端: 支持 Ollama 本地模型 和 OpenAI 兼容 API,可自由切换
  • 💻 Web 界面: 基于 Gradio 的友好聊天界面
  • 💾 持久化存储: ChromaDB 向量数据库,索引一次,持久使用
  • 🔒 完全离线: 使用本地嵌入模型(sentence-transformers),无需外部 API

🚀 快速开始

1. 环境准备

# 安装 uv(如已安装可跳过)
pip install uv

# 同步依赖
uv sync

2. 配置

# 复制配置文件
cp .env.example .env

# 编辑 .env 选择 LLM 后端
# 方式一:使用 Ollama(推荐,完全离线)
LLM_PROVIDER=ollama
OLLAMA_MODEL=qwen2.5:7b

# 方式二:使用 OpenAI 兼容 API
LLM_PROVIDER=openai
OPENAI_API_KEY=sk-your-key
OPENAI_MODEL=gpt-4o-mini

3. 索引文档

# 将文档放入 docs/ 目录
# 然后运行索引
uv run python scripts/ingest.py

# 如需清空重建
uv run python scripts/ingest.py --reset

4. 启动问答

uv run python src/app.py
# 打开浏览器访问 http://localhost:7860

📁 项目结构

.
├── pyproject.toml          # uv 项目配置
├── .env.example            # 配置模板
├── docs/                   # 文档存放目录(放 PDF/DOCX/TXT/MD 文件)
├── data/chroma/            # ChromaDB 向量数据库
├── src/
│   ├── config.py           # 统一配置管理
│   ├── document_loader.py  # 文档加载器
│   ├── text_splitter.py    # 文本分割器
│   ├── embeddings.py       # 嵌入模型
│   ├── vector_store.py     # 向量存储
│   ├── llm.py              # LLM 工厂
│   ├── rag_chain.py        # RAG 链
│   └── app.py              # Web UI 入口
└── scripts/
    └── ingest.py           # 文档索引脚本

⚙️ 配置说明

环境变量 默认值 说明
LLM_PROVIDER ollama LLM 提供者: ollama / openai
OLLAMA_BASE_URL http://localhost:11434 Ollama 服务地址
OLLAMA_MODEL qwen2.5:7b Ollama 模型名称
OPENAI_API_KEY OpenAI API Key
OPENAI_BASE_URL https://api.openai.com/v1 API 地址(支持代理)
OPENAI_MODEL gpt-4o-mini OpenAI 模型名称
EMBEDDING_MODEL all-MiniLM-L6-v2 嵌入模型(HuggingFace)
CHUNK_SIZE 500 文本分割大小
CHUNK_OVERLAP 50 文本分割重叠量
RETRIEVER_TOP_K 4 检索返回文档数

🛠️ 技术栈

  • 环境管理: uv
  • 框架: LangChain
  • 向量数据库: ChromaDB
  • 嵌入模型: sentence-transformers
  • LLM: Ollama / OpenAI 兼容 API
  • Web UI: Gradio

📝 使用 Ollama

# 安装 Ollama
# 参见: https://ollama.com

# 下载模型(推荐 qwen2.5 系列,中文友好)
ollama pull qwen2.5:7b
# 或使用其他模型
ollama pull llama3.1:8b
ollama pull qwen3:8b

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages