LangChain 入门学习第十篇-封装一个本地知识库问答 CLI

💡 原文中文,约3200字,阅读约需8分钟。
📝

内容提要

本文介绍LangChain学习第十篇,将本地博客问答封装为CLI工具。通过argparse实现search和ask两个子命令:search仅检索文章,ask检索后调用模型回答。CLI便于调试,验证RAG、Agent等核心链路。第一阶段已完成LLM调用、PromptTemplate、工具调用、RAG、记忆等基础实践,后续可扩展向量数据库、Web服务等。

🔎

延伸解读

CLI 优先的开发策略

文章建议在学习阶段先做 CLI 而非 Web 页面,理由是 CLI 更易调试、无需处理前端状态、输入输出清晰,适合验证 RAG、Agent、Memory 等核心链路。这种策略有助于在复杂化之前确保基础功能正确,为后续封装成 Web API 或页面打下更稳定的基础。

search 与 ask 分离的调试价值

CLI 提供 search 和 ask 两个子命令,分别用于仅检索和检索后问答。这种设计便于调试:先通过 search 检查检索结果是否相关,若不相关则调整检索参数,再运行 ask 查看最终回答。这种分离有助于定位问题出在检索还是生成环节,提高调试效率。

第一阶段能力清单与扩展方向

文章总结了第一阶段已实践的能力,包括 LLM 调用、PromptTemplate、结构化输出、工具调用、Agent、RAG、记忆等。后续扩展方向包括接入真实 embedding 模型、使用向量数据库(如 Chroma、FAISS、PGVector)、增量索引、Web API、评测集和自动化评估,以及接入 LangSmith 等追踪工具。

Q&A

LangChain 入门学习第十篇主要介绍了什么内容?

本篇是LangChain入门学习的第十篇,主要将前面九篇学到的能力(如LLM调用、PromptTemplate、工具调用、RAG、记忆等)封装成一个本地知识库问答CLI工具,通过argparse实现search和ask两个子命令,便于调试和验证核心链路。

如何使用这个CLI工具进行搜索和问答?

使用`uv run python -m chapter10.app search "问题" --category 分类`进行搜索,只返回检索结果;使用`uv run python -m chapter10.app ask "问题" --category 分类`进行问答,先检索再调用模型回答。两个命令都支持--top-k参数控制返回结果数量。

search和ask命令有什么区别?

search命令只检索文章,不调用模型,适合调试检索效果;ask命令先检索文章,再调用模型生成回答,适合查看最终答案。

为什么在学习阶段建议先做CLI而不是Web页面?

因为CLI更容易调试,不需要处理前端状态,输入输出清晰,适合验证RAG、Agent、Memory等核心链路。等CLI跑顺了再封装成Web API或页面会更稳定。

这个CLI工具支持哪些参数?

支持question(问题,可选)、--top-k(返回结果数量,默认4)、--category(限定博客分类)。如果不传子命令,默认执行ask。

第一阶段的学习目标是什么?

第一阶段的目标不是做大而全的应用,而是把LangChain常用的基础能力都实践一遍,包括LLM调用、PromptTemplate、结构化输出、Tool Calling、Agent、Document Text Splitter、Retriever、RAG、Memory和CLI封装。

后续可以如何扩展这个CLI工具?

后续可以接入真正的embedding模型,使用Chroma、FAISS或PGVector向量数据库,做增量索引,提供Web API,加入评测集和自动化评估,以及接入LangSmith等tracing工具。

🏷️

标签

➡️

继续阅读