搭建RAG系统 — 我的第一个AI副项目
about 2 months agoby Shin1分钟阅读
Open Source
AI
RAG
LangChain
Python
分享:
搭建RAG系统 — 我的第一个AI副项目
寒假期间,我从零开始构建了一个RAG(检索增强生成)系统。原本只是为了学习,最终变成了一个正式的开源项目。
什么是RAG?
RAG是一种将大语言模型的能力与外部知识检索相结合的技术。不再仅仅依赖LLM在训练时"记住"的信息,而是在查询时提供相关文档,让模型基于实际资料来回答问题。
这对于领域特定的问题特别有用,因为LLM的训练数据可能已经过时或不够全面。
项目:rag-research
rag-research 是一个以Rust官方文档为知识库的完整RAG流水线。用自然语言问关于Rust的问题,就能得到基于官方文档的回答。
技术栈:
- LangChain — RAG流水线编排
- ChromaDB — 存储文档嵌入的向量数据库
- OpenAI API — 嵌入(text-embedding-3-small)和生成(GPT-4o-mini)
- FastAPI — 支持SSE流式传输的REST API
- Chainlit — 交互式Web界面
- Docker — 容器化部署
工作原理:
- 下载并处理Rust文档,切分为文本块
- 生成嵌入向量并存储到ChromaDB
- 查询时,找到与用户问题最相似的文本块
- 将这些文本块作为上下文传给LLM生成回答
- 通过SSE实时流式返回响应
学到了什么
构建这个项目让我深刻理解了RAG的实际挑战:
- 分块策略很重要 — 文档的切分方式会显著影响检索质量
- 嵌入质量是关键 — 向量检索同样适用GIGO原则(垃圾进垃圾出)
- 流式传输改善用户体验 — 用户不想等10秒然后看到一大段文字
- 多语言RAG很难 — 支持中英日三语需要对语言特定的查询做精细处理
后续
这个项目成为了本博客AI助手Kokoron的基础。我计划将它从Rust文档问答工具发展为更通用的博客内容助手。