我的 Chatbot 进化记:一周冲刺,把交互做得更聪明
我用一周重构了 chatbot:从只看摘要升级到支持全文检索与 chunking,同时补上安全机制与元数据管理。这里是我在 AI 能力与成本平衡上的实战经验。
Update (2026): This chatbot evolved into Sydney! After many iterations, Sydney now lives at /ask/ and focuses on blog content and products.
上周我刚发布 DIY chatbot version 0.1 时,目标是做一个能跨我的博客文章进行信息整合并回答问题的对话式 agent。作为编程新手,v0.1 是很重要的第一步,但限制也很明显。知识库只包含文章摘要,chatbot 在检索具体数字或日期等细节时准确率不够。我的动力一直是通过亲手实践,逐步提升 chatbot 能力。这篇文章是优化一周后的更新:重点放在把知识库扩展到全文内容、加强安全措施,以及为成本优化 AI 模型。虽然它离我理想状态还很远,但这批初始升级已经显示出不错进展。
下面是相对上一版完成的内容:
1. Functionality
chatbot 已覆盖到 2023 年 10 月底所有最新文章
我在 10 月发布了 6 篇博客,这些文章现在都已纳入 chatbot 知识库。比如你可以问:“Tell me the key insights about Coursera that Chandler wrote”,chatbot 能基于我 2023 年 10 月写的文章给出答案。
知识库现在包含文章全文,而不只是摘要
第一版因为我对 OpenAI API 上下文窗口限制理解不够,只能先给每篇文章生成摘要,再用 OpenAI embedding API endpoint 做向量化。我当时还不知道怎么把全文切成更小片段并逐段 embedding,同时保持上下文信息完整(如 metadata、URL、title 等)。
本周已经做了第一轮 chunking。现在 chatbot 的知识库是文章全文,不再只是摘要。后续还有优化空间,我会继续调试长文最合适的 chunk 大小和策略。当前做法是把长文按段落这个自然断点切分,每段不超过 800 tokens。
这样下一版里,它在回答具体数字相关问题时会更轻松。
文章发布日期、标题、URL 都被纳入检索流程
用户输入问题后,在 retrieval 过程中,我也把文章标题、发布日期和 URL 一并提供给 chatbot。所以现在如果用户追问,它可以返回对应 URL 或发布时间。
这能帮助用户做验证,或直接继续阅读原文。
2. Security
目前已实现一些基础安全措施:
- 输入在发送到 API 前先做校验
- 基础 rate limiter,例如限制每分钟可向 chatbot 提问次数
- 用户 query 与 chatbot 响应都经过 OpenAI moderation API 校验
3. GPT-4 vs GPT-3.5
因为成本原因,我的 chatbot 目前会继续使用 GPT-3.5。GPT-4 的回答质量确实比 GPT-3.5 好很多。但在我还没找到“既保持会话历史、又高效处理上下文窗口长度”的最佳方案前,一旦问题复杂、需要跨多篇文章检索,GPT-4 的单次回答成本会高到 $0.15 或 $0.2 左右。这个 pet project 我现在还负担不起。T.T
先更新到这里。如果你想试 chatbot,这里是入口。上一篇关于 chatbot 的文章在这里。祝你周末愉快。
如果你也做过 chatbot,或者做过 embeddings/chunking,我很好奇——你觉得什么 chunk size 和方法最有效?我还在持续实验中 :)
Next in the chatbot journey: A few months later, I rebuilt the entire chatbot from scratch using LangChain and FAISS — How I Emerged From Coding Quicksand With an AI Agent.
致敬,
Chandler
P.S.: The new course on Generative AI for Everyone, taught by Andrew Ng, does not disappoint. It is a Free course, that will give you general knowledge about Generative AI, how typical Gen AI software or web applications are being built, etc... It is pretty short too so you can watch all the videos within a weekend.





