基于 LangChain + LangGraph 的智能知识库助手:本地文本 → FAISS 向量库 → RAG 链式问答(入门版) 或 Agent + 多工具(进阶版 v0.2.0)。
版本说明:
v0.1.0为纯 LCEL 链 + 会话记忆;v0.2.0默认入口为 Agent 模式(可在main.py中切换use_agent)。
- 文档加载(多编码兜底)→ 切分 → OpenAI Embeddings → FAISS 本地索引
- 入门版:
RunnableWithMessageHistory多轮对话 + RAG - 进阶版:
create_agent+ 工具(知识库问答 / 关键词检索 / 摘要)+ Checkpointer(LangGraphMemorySaver)
📝 配套博客(入门版):第6篇:实战项目-智能知识库助手(入门版)
📝 配套博客(进阶版):第11篇:实战项目-智能知识库助手(进阶版)
- 🤖 Agent 调度 - 根据意图选择工具
- 🔧 query_knowledge_base - RAG 理解型问答
- 🔎 search_documents - 检索片段 + 关键词高亮
- 📝 summarize_document - 主题摘要
- 🧠 Checkpointer - 线程级对话状态(
thread_id)
- 💬 多轮对话 -
session_id隔离历史 - 🗄️ FAISS + RAG - 与 v0.1.0 一致
- 编排:LangChain LCEL、
langchain.agents.create_agent - 状态:LangGraph
MemorySaver(进阶版) - LLM / Embedding:OpenAI(
langchain-openai) - 向量库:FAISS(
langchain-community) - 配置:
core/config.py默认配置 +merge_config
python -m venv .venv
.\.venv\Scripts\activate
pip install -r requirements.txtcopy .env.example .env编辑 .env,填入 OPENAI_API_KEY。可选:OPENAI_BASE_URL(兼容代理/兼容端点)。
默认 进阶版(Agent):
python main.py切换为 入门版:在 main.py 中将 use_agent=True 改为 use_agent=False,并按注释调整 interactive_chat 的 session_id / thread_id。
首次运行会生成 faiss_index/(已忽略);再次运行会加载已有索引。
- 输入
退出/quit/exit结束 - 输入
重置/reset清空当前会话/线程记忆 - 替换知识库:修改
main.py中load_documents([...])的路径或替换示例崔老道捉妖之夜闯董妃坟.txt
smart_knowledge_assistant/
├── main.py
├── requirements.txt
├── .env.example
├── api/app.py
├── core/
│ ├── agent.py # Agent(进阶版)
│ ├── tools.py # 工具定义
│ ├── middleware.py # 日志/性能/错误中间件
│ ├── memory.py # 链式记忆 + Agent Checkpointer
│ ├── chain.py
│ ├── vectorstore.py
│ ├── loaders.py
│ └── config.py
└── test/
├── test_core.py
├── test_agent_tools.py
└── test_clear_session.py
- 禁止将真实密钥提交到仓库
- 仅加载自己生成、可信的 FAISS 索引(加载时使用
allow_dangerous_deserialization=True)
python -m unittest -q- Fork → 新建分支 → 提交 PR
MIT — 见仓库内 LICENSE(若有)。
⭐ 若对你有帮助,欢迎 Star。