今天阳光很暖
RAG 系列 9:上下文感知 RAG 与多轮对话记忆 RAG 系列 9:上下文感知 RAG 与多轮对话记忆
上一篇文章已经实现了一条基础 RAG 链:用户提出问题,Retriever 从 Chroma 中找到相关文档,本地 Qwen3 再根据文档回答。 这条链可以回答“什么是任务分解?”,但是连续对话时还会遇到一个问题: 用户第一轮问“什么是任
2026-03-12
RAG 系列 8:从网页到 Chroma 构建 RAG 知识库 RAG 系列 8:从网页到 Chroma 构建 RAG 知识库
前面已经完成了 Embedding、语义搜索和三种向量数据库的原生调用,但这些示例都停在“找出相似文本”这一步。 真正的 RAG 还要把检索结果交给大语言模型,让模型只根据外部知识回答问题。本文使用一篇公开网页、本地 Qwen3-Embed
2026-03-05
RAG 系列 7:部署 Milvus 并实现向量检索 RAG 系列 7:部署 Milvus 并实现向量检索
FAISS 和 Chroma 都可以直接嵌入 Python 程序。Milvus Standalone 不同,它是一个独立运行的向量数据库服务,应用通过网络端口访问它。 这一篇会在 M1 Max 上真实启动 Milvus 2.6.9 Stan
2026-02-26
RAG 系列 6:使用 Chroma 实现持久化向量检索 RAG 系列 6:使用 Chroma 实现持久化向量检索
上一篇使用 FAISS 完成了本地向量检索,但 FAISS 索引只负责向量和位置编号,原始文本与元数据需要单独保存。 这一篇改用 Chroma 的原生 API。Chroma 可以在一个 Collection 中同时管理 ID、Embeddi
2026-02-19
RAG 系列 5:使用 FAISS 实现本地向量检索 RAG 系列 5:使用 FAISS 实现本地向量检索
上一篇比较了 FAISS、Chroma 和 Milvus。这一篇先使用最轻量的 FAISS,不启动数据库服务,也不使用 LangChain 的 VectorStore。 我们会让本地 Qwen3-Embedding-0.6B 生成 1024
2026-02-12
RAG 系列 4:向量数据库基础与 FAISS、Chroma、Milvus 选型 RAG 系列 4:向量数据库基础与 FAISS、Chroma、Milvus 选型
上一篇使用 CSV 保存了 100 条评论及其 Embedding,然后在查询时逐行读取向量、计算余弦相似度并排序。这个方法容易理解,也能帮助我们验证语义搜索的完整过程,但数据量继续增加后会遇到几个问题: 每次查询都要扫描全部向量。 向量
2026-02-05
RAG 系列 3:使用 Qwen3 Embedding 实现评论数据语义搜索 RAG 系列 3:使用 Qwen3 Embedding 实现评论数据语义搜索
上一篇已经完成 Qwen3-Embedding-0.6B 的本地部署,也分别使用了 LangChain 的 embed_documents() 和 embed_query()。前文只比较了几句话,这一篇把这些知识放进一个更接近真实使用场景的
2026-01-29
RAG 系列 2:本地部署 Qwen3 Embedding 并接入 LangChain RAG 系列 2:本地部署 Qwen3 Embedding 并接入 LangChain
上一篇介绍了向量、One-Hot 和余弦相似度,但使用的都是手工设置的二维向量。 本文开始使用真正的 Embedding 模型。我们会在 M1 Max 上下载 Qwen/Qwen3-Embedding-0.6B,使用 Senten
2026-01-23
RAG 系列 1:Embeddings 从向量到语义相似度 RAG 系列 1:Embeddings 从向量到语义相似度
LangChain 系列已经完成模型接入、消息、提示词、结构化输出和聊天应用。前面的示例主要使用聊天模型:向模型发送一段文字,再得到一段可以直接阅读的回答。 从本文开始进入独立的 RAG 系列。RAG 的第一步不是直接搭建知识库,而是先理解
2026-01-09