AI Agent白手起家46: LangChain 向量数据库实战 — 从增删查到高级检索
纲要向量数据库基础在 RAG 系统中的核心位置与传统关系型数据库的本质区别LangChain 向量数据库接口统一方法add_documents、delete、similarity_search常用向量数据库概览Chroma、FAISS、Pinecone、Milvus 等基本操作实战文档添加支持自定义 ID文档删除按 ID文本相似性搜索与向量搜索高级检索技巧最大边际相关性MMR搜索混合搜索关键词 向量完整可运行代码使用FakeEmbeddings与内存向量库模拟增删查与 MMR引言在 RAG检索增强生成系统中经过加载、切片和向量化的文档最终需要一个高效的存储和检索容器——这就是向量数据库。它不仅仅是一个存放向量的仓库更承担着语义搜索的核心任务根据查询向量快速找到最相似的文档片段。LangChain 通过统一的接口封装了各类向量数据库让开发者可以像操作普通数据一样进行增删查同时提供了 MMR、混合搜索等高级功能。本文将通过可运行的代码手把手带你掌握向量数据库的关键操作。向量数据库基础向量数据库与传统的关系型数据库如 MySQL有着本质不同维度关系型数据库向量数据库存储内容结构化数据表格、字段高维向量数组浮点数序列查询方式精确匹配SQL where、join相似度搜索余弦距离、欧氏距离典型场景交易处理、用户管理语义检索、图像搜索、推荐系统数据模式固定 Schema灵活无需预定义结构在 RAG 系统中向量数据库负责存储所有外部知识片段的向量表示当用户查询到来时同样经过嵌入模型转为向量然后在库中通过相似度算法检索出最相关的 Top‑K 个文档片段。文档切片嵌入模型向量化存入向量数据库用户查询查询向量化相似度搜索返回相关片段LangChain 向量数据库接口LangChain 为向量数据库抽象出了统一的接口所有实现该接口的数据库都支持以下方法add_documents(documents)批量添加文档含向量。delete(ids)按 ID 删除文档。similarity_search(query, k)纯文本查询返回最相似的 k 个文档。similarity_search_by_vector(vector, k)直接传入向量进行查询。部分数据库还支持max_marginal_relevance_searchMMR和混合检索。常见向量数据库有 Chroma、FAISS、Pinecone、Milvus、Weaviate 等其中 Chroma 和 FAISS 适合本地轻量级使用Pinecone 和 Milvus 面向生产环境。向量库基本操作增、删、查下面使用FakeEmbeddings模拟向量嵌入搭配 Chroma 内存向量库演示完整的增删查流程。无需任何外部 API。安装依赖pipinstalllangchain langchain-core langchain-community chromadb文档添加fromlangchain_community.embeddings.fakeimportFakeEmbeddingsfromlangchain_community.vectorstoresimportChromafromlangchain_core.documentsimportDocument# 模拟嵌入模型维度 128embeddingsFakeEmbeddings(size128)# 准备文档docs[Document(page_content智能温控水杯支持手机 App 远程控温。,metadata{source:product}),Document(page_content产品续航 48 小时采用 316 不锈钢内胆。,metadata{source:product}),Document(page_content充电时请使用 5V/2A 适配器。,metadata{source:product}),]# 创建内存向量库并添加文档可指定 IDvectorstoreChroma(embedding_functionembeddings,collection_namedemo)ids[doc_1,doc_2,doc_3]vectorstore.add_documents(docs,idsids)print(已添加文档数:,vectorstore._collection.count())删除文档按 ID 删除某条记录vectorstore.delete(ids[doc_2])print(删除后文档数:,vectorstore._collection.count())# 输出 2相似性搜索使用纯文本查询resultsvectorstore.similarity_search(怎么充电,k1)fordocinresults:print(doc.page_content)# 应返回充电相关文档也可以先将查询向量化再搜索query_vectorembeddings.embed_query(怎么充电)resultsvectorstore.similarity_search_by_vector(query_vector,k1)print(results[0].page_content)高级检索MMR 搜索最大边际相关性MMR算法在保持结果与查询相关的同时尽量增加结果之间的多样性避免返回过于相似的内容。Chroma 支持max_marginal_relevance_search。# 添加一些内容相近的文档以便观察 MMR 效果additional_docs[Document(page_content水杯过热保护功能详解,metadata{source:manual}),Document(page_content如何正确清洗保温杯内胆,metadata{source:manual}),Document(page_content电池续航测试及充电注意事项,metadata{source:manual}),]vectorstore.add_documents(additional_docs)# MMR 搜索取 3 条结果多样性参数 lambda_mult0.5值越小越注重多样性mmr_resultsvectorstore.max_marginal_relevance_search(充电,k3,lambda_mult0.5)fordocinmmr_results:print(doc.page_content)MMR 会尽量避免只返回三篇全都是充电的文章而是可能混入一篇关于清洗或过热保护的文档提供更丰富的上下文。混合搜索简介一些高级向量数据库如 Pinecone支持混合搜索先通过关键词如 BM25 算法过滤候选文档再在缩小后的集合中进行向量相似度匹配。这种方式能结合关键词的精确性和语义的泛化性显著提升检索质量。LangChain 提供了相应的 Retrieval 封装如 Pinecone 的HybridSearchRetriever。因需要外部服务本文不展开运行但其理念与 MMR 相似用更智能的算法提升召回率和答案质量。完整可运行代码整合以下代码将增、删、查、MMR 整合于一个脚本使用内存向量库无需任何 API Key。fromlangchain_community.embeddings.fakeimportFakeEmbeddingsfromlangchain_community.vectorstoresimportChromafromlangchain_core.documentsimportDocument embeddingsFakeEmbeddings(size128)# 初始文档docs[Document(page_content智能温控水杯支持手机 App 远程控温。,metadata{type:feature}),Document(page_content产品续航 48 小时采用 316 不锈钢内胆。,metadata{type:feature}),Document(page_content充电时请使用 5V/2A 适配器。,metadata{type:caution}),Document(page_content请勿将杯体浸入水中清洗。,metadata{type:caution}),Document(page_content可通过 App 调节温度范围 40~100°C。,metadata{type:feature}),]vectorstoreChroma(embedding_functionembeddings,collection_namecup)ids[d1,d2,d3,d4,d5]vectorstore.add_documents(docs,idsids)# 删除一条vectorstore.delete(ids[d4])print(剩余文档数:,vectorstore._collection.count())# 文本搜索print(\n--- 相似性搜索充电 ---)fordocinvectorstore.similarity_search(如何充电,k2):print(doc.page_content)# MMR 搜索print(\n--- MMR 搜索充电多样性优先 ---)fordocinvectorstore.max_marginal_relevance_search(充电,k2,lambda_mult0.3):print(doc.page_content)总结向量数据库是 RAG 应用的数据心脏LangChain 通过统一接口让开发者无需关心底层差异即可完成增删查。掌握基本的add_documents、delete、similarity_search后根据场景选用 MMR 或混合搜索能显著提升检索质量和最终回答的准确度。从本地 Chroma/FAISS 到云端 Pinecone/MilvusLangChain 都能丝滑切换为你的 AI 应用提供强大的知识检索基座。

相关新闻

如何快速配置炉石佣兵自动化脚本:终极解放游戏时间指南

如何快速配置炉石佣兵自动化脚本:终极解放游戏时间指南

如何快速配置炉石佣兵自动化脚本:终极解放游戏时间指南 【免费下载链接】lushi_script This script is to save your time from Mercenaries mode of Hearthstone 项目地址: https://gitcode.com/gh_mirrors/lu/lushi_script 还在为炉石传说佣兵战记的重复操…

2026/8/9 2:03:39 阅读更多 →
剪切板与URL操作全解析:从基础读写到自动化集成实战

剪切板与URL操作全解析:从基础读写到自动化集成实战

这次我们来看一个非常实用的技术主题:剪切板操作与应用URL操作。这听起来可能不像AI模型那样酷炫,但却是日常开发、自动化脚本、浏览器插件乃至跨应用数据流转的核心基础。无论是想实现一键复制网页内容到本地,还是通过URL Scheme深度链接唤醒…

2026/8/10 7:39:51 阅读更多 →
基于Codex与DeepSeek构建AI办公自动化工作流实战指南

基于Codex与DeepSeek构建AI办公自动化工作流实战指南

你是不是也遇到过这样的场景:周一早上,老板在飞书群里你:“下午的周会PPT做好了吗?还有上周的数据分析报告,最好能可视化一下。”你看着电脑里零散的文档、表格和图片,心里一算,光是整理素材、排…

2026/8/9 2:03:39 阅读更多 →

最新新闻

Dify工作流迭代节点详解:从原理到实战,实现AI批量处理与循环逻辑

Dify工作流迭代节点详解:从原理到实战,实现AI批量处理与循环逻辑

大家好,我是专注于AI应用开发与落地的技术博主。在构建复杂的AI应用时,我们常常会遇到这样的困境:一个简单的线性流程无法满足多轮交互、条件判断或循环处理的需求。比如,你想让AI根据用户输入动态调整回复策略,或者对…

2026/8/10 7:39:47 阅读更多 →
Seraphine:如何用智能游戏助手3步提升你的英雄联盟排位胜率

Seraphine:如何用智能游戏助手3步提升你的英雄联盟排位胜率

Seraphine:如何用智能游戏助手3步提升你的英雄联盟排位胜率 【免费下载链接】Seraphine 英雄联盟战绩查询工具 项目地址: https://gitcode.com/gh_mirrors/se/Seraphine 还在为英雄联盟排位赛中的BP决策和战绩查询而烦恼吗?Seraphine是一款基于英…

2026/8/10 7:39:47 阅读更多 →
Kimi-3大模型实测:长文本处理与API集成在文档分析、内容审核与PPT生成中的应用

Kimi-3大模型实测:长文本处理与API集成在文档分析、内容审核与PPT生成中的应用

这次我们来看一个近期讨论度很高的 AI 工具——Kimi-3。它不是本地部署的模型,而是月之暗面(Moonshot AI)推出的新一代在线大语言模型服务。核心看点在于,它宣称在长文本处理、逻辑推理和复杂任务规划上有了显著提升。对于需要处理…

2026/8/10 7:39:47 阅读更多 →
C++返回值优化(RVO/NRVO)原理与实践:彻底消除函数返回时的拷贝开销

C++返回值优化(RVO/NRVO)原理与实践:彻底消除函数返回时的拷贝开销

1. 项目概述:从一次“多余”的拷贝说起 如果你写过一段时间的C,尤其是接触过一些性能要求比较高的项目,大概率遇到过一种让人有点“憋屈”的情况:你明明已经精心设计了移动语义,使用了 std::move ,甚至用…

2026/8/10 7:39:47 阅读更多 →
Dify工作流迭代功能详解:从循环逻辑到多轮对话实战

Dify工作流迭代功能详解:从循环逻辑到多轮对话实战

这次我们来看 Dify 工作流中的“迭代”功能。对于正在使用 Dify 构建复杂 AI 应用的人来说,如何让工作流具备循环处理、条件判断和动态调整的能力,是进阶应用的关键。Dify 的迭代节点,正是解决这类问题的核心工具。它不是简单的重复执行&…

2026/8/10 7:39:47 阅读更多 →
程序化生成与体素融合:从《我的世界》到《无人深空》的技术实现

程序化生成与体素融合:从《我的世界》到《无人深空》的技术实现

在实际游戏开发与玩家社区中,当一款大型游戏的核心版本进行重大更新,尤其是涉及底层渲染、生成逻辑或核心玩法融合时,其“灰度发布”阶段总是牵动着无数开发者和资深玩家的心。这个过程并非简单的功能上线,而是一场对系统稳定性、…

2026/8/10 7:38:47 阅读更多 →

日新闻

GraphQL-CSS API全解析:useGqlCSS、GqlCSS组件与getStyles实用指南

GraphQL-CSS API全解析:useGqlCSS、GqlCSS组件与getStyles实用指南

GraphQL-CSS API全解析:useGqlCSS、GqlCSS组件与getStyles实用指南 【免费下载链接】graphql-css A blazing fast CSS-in-GQL™ library. 项目地址: https://gitcode.com/gh_mirrors/gr/graphql-css GraphQL-CSS是一个基于GraphQL的CSS-in-GQL™库&#xff0…

2026/8/10 0:00:02 阅读更多 →
告别语言障碍:KISS Translator 双语翻译插件终极指南

告别语言障碍:KISS Translator 双语翻译插件终极指南

告别语言障碍:KISS Translator 双语翻译插件终极指南 【免费下载链接】kiss-translator A simple, open source bilingual translation extension & Greasemonkey script (一个简约、开源的 双语对照翻译扩展 & 油猴脚本) 项目地址: https://gitcode.com/…

2026/8/10 0:00:02 阅读更多 →
BepInEx配置管理器:游戏插件配置的终极可视化解决方案

BepInEx配置管理器:游戏插件配置的终极可视化解决方案

BepInEx配置管理器:游戏插件配置的终极可视化解决方案 【免费下载链接】BepInEx.ConfigurationManager Plugin configuration manager for BepInEx 项目地址: https://gitcode.com/gh_mirrors/be/BepInEx.ConfigurationManager 你是否曾经因为游戏插件的复杂…

2026/8/10 0:00:02 阅读更多 →

周新闻

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁 【免费下载链接】baidupankey 在线查询网盘提取码(维护中 rm repo) 项目地址: https://gitcode.com/gh_mirrors/ba/baidupankey 你是否曾经在深夜寻找一份重要资料&#x…

2026/8/10 1:05:29 阅读更多 →
如何快速生成中国车牌图片:Python开源工具完整指南

如何快速生成中国车牌图片:Python开源工具完整指南

如何快速生成中国车牌图片:Python开源工具完整指南 【免费下载链接】chinese_license_plate_generator 中国车牌生成器 项目地址: https://gitcode.com/gh_mirrors/ch/chinese_license_plate_generator 中国车牌生成器是一个基于Python的开源项目&#xff0c…

2026/8/10 1:05:29 阅读更多 →
收藏!小白程序员轻松入门大模型,从Harness工程开始实践

收藏!小白程序员轻松入门大模型,从Harness工程开始实践

文章强调学习大模型不应只关注模型本身,而应重视模型外的系统搭建,即Harness。提出AgentModelHarness的实用公式,详细介绍Harness的四个层次:持久化层、执行层、控制层和观察与验证层。文章还探讨了上下文工程、工具设计、AGENTS.…

2026/8/10 1:05:29 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/9 17:05:02 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/10 1:05:29 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/9 17:05:02 阅读更多 →