基于 LangGraph + FAISS + LLM 构建的智能知识库问答系统,支持多种文档格式上传、向量检索和流式对话。
💡 点击上方链接即可在线体验知识库问答系统的完整功能!
- 框架: LangGraph (工作流编排)
- 向量数据库: FAISS (向量存储与检索)
- 大语言模型: DeepSeek-V3 (通过SiliconCloud)
- 嵌入模型: Qwen/Qwen3-Embedding-8B
- Web 界面: Streamlit
- 命令行界面: Rich
- 日志系统: Loguru
- 包管理: UV
- 可观测性: LangSmith
- Python 3.13
- uv 包管理器
- Docker & Docker Compose (可选,用于容器化部署)
- 克隆项目
git clone https://github.com/arkin-developer/knowledge-qa.git
cd knowledge-qa- 一键部署
chmod +x init.sh
./init.sh- 访问应用
- Web 界面: http://localhost:8501
- 详细部署说明请参考 DEPLOYMENT.md
- 克隆项目
git clone https://github.com/arkin-developer/knowledge-qa.git
cd knowledge-qa- 创建 Python 3.13 环境(推荐使用 conda)
# 创建 conda 环境
conda create -n knowledge-qa python=3.13 -y
# 激活环境
conda activate knowledge-qa
# 安装uv
pip install uv- 安装依赖
uv sync-
配置环境变量
复制示例配置文件:
cp .env.example .env
然后编辑
.env文件,配置以下参数:# SiliconCloud 配置 SILICONCLOUD_API_KEY=your_api_key SILICONCLOUD_API_BASE=https://api.siliconflow.cn/v1 # LLM 配置 LLM_MODEL=deepseek-ai/DeepSeek-V3 LLM_TEMPERATURE=0.7 LLM_MAX_TOKENS=256000 # 嵌入模型配置 EMBEDDING_PROVIDER=siliconcloud EMBEDDING_MODEL=Qwen/Qwen3-Embedding-8B # 文本分段配置 CHUNK_SIZE=600 CHUNK_OVERLAP=100 # 向量库配置 VECTOR_STORE_PATH=./data/faiss_db SEARCH_K=3 # 记忆配置 MEMORY_WINDOW_SIZE=30 # LangSmith 配置 LANGSMITH_API_KEY=your_langsmith_api_key LANGSMITH_PROJECT=knowledge_qa_test LANGCHAIN_TRACING_V2=true LANGCHAIN_DEBUG=false # 应用配置 APP_ENV=development LOG_LEVEL=INFO
- 📌 获取 API 密钥:
- SiliconCloud: 访问 https://cloud.siliconflow.cn 注册并获取 API Key
- LangSmith (可选): 访问 https://smith.langchain.com 注册并获取 API Key
- 📌 获取 API 密钥:
方法一:使用启动脚本(推荐)
uv run python start_cli.py方法二:直接启动
uv run python -m src.knowledge_qa.cliCLI 功能菜单:
1- 上传文档到知识库2- 查看聊天记录上下文3- 查看目前向量存储的数量4- 清除上下文5- 流式问答模式0- 退出程序- 直接输入问题 - 开始对话
新增功能:
- 支持本地文档直接阅读(无需上传到向量库)
- 智能关键词搜索,支持中英文混合搜索
- 自动文档片段提取和上下文扩展
方法一:使用启动脚本(推荐)
# 使用默认端口 8501
uv run python start_web.py
# 指定端口
uv run python start_web.py 8502方法二:直接启动
uv run streamlit run src/knowledge_qa/app.py --server.port 8501访问 http://localhost:8501 使用 Web 界面。
knowledge-qa/
├── .cursor/ # cursor 编码规则
├── src/knowledge_qa/ # 核心源代码
│ ├── agent.py # LangGraph Agent 主逻辑
│ ├── app.py # Streamlit Web 界面
│ ├── cli.py # 命令行界面
│ ├── config.py # 配置管理
│ ├── file_parser.py # 文档解析器
│ ├── llms/ # LLM 模块目录
│ │ ├── qa_llm.py # 知识库问答大模型
│ │ ├── reader_llm.py # 文档阅读器模型
│ │ ├── refine_llm.py # 材料完善建议模型
│ │ └── finished_llm.py # 完成状态判断模型
│ ├── log_manager.py # 日志管理
│ ├── memory.py # 对话记忆管理
│ ├── text_processor.py # 文本处理与向量化
│ └── vector_store.py # 向量存储管理
├── examples/ # 示例文档
├── data/ # 数据存储目录
│ ├── faiss_db/ # FAISS 向量数据库
│ ├── upload/ # 用户上传文档目录
│ └── chunks.db # 文档分块数据库
├── logs/ # 日志文件
├── start_cli.py # CLI 启动脚本
├── start_web.py # Web 启动脚本
├── pyproject.toml # 项目配置与依赖
├── uv.lock # 依赖锁定文件
└── README.md # 项目说明文档
系统集成了 LangSmith 进行完整的调用链追踪:(当前项目的URL:https://smith.langchain.com/public/caffb587-3dab-41c3-8967-77d299180e62/r)
- 访问 https://smith.langchain.com/
- 登录您的 LangSmith 账户
- 查看项目:
knowledge_qa_test - 您将看到完整的调用链追踪信息,包括:
- 每个节点的执行时间
- 输入和输出数据
- 错误信息(如果有)
- 性能指标和相似度分数
运行完整测试:
uv run python -m src.knowledge_qa.agent测试文本处理:
uv run python -m src.knowledge_qa.text_processor测试向量存储:
uv run python -m src.knowledge_qa.vector_store本项目采用 MIT 许可证 - 查看 LICENSE 文件了解详情。
如果您遇到任何问题或有建议,请:
- 查看 Issues 页面
- 创建新的 Issue 描述您的问题
- 联系维护者@[email protected]
注意: 使用前请确保已正确配置所有必要的 API 密钥和环境变量。


