向量数据库实战:选型、调优与落地~系列文章19:向量数据库 + RAG 融合实战:构建企业级知识库的完整链路
向量数据库 RAG 融合实战构建企业级知识库的完整链路 本文是《向量数据库实战选型、调优与落地》专栏第 19 篇⏱️阅读时间约 15 分钟 开篇RAG 是向量数据库最核心的应用场景RAGRetrieval-Augmented Generation 检索增强生成简单说就是让大模型在回答之前先从你的知识库里查资料┌─────────────────────────────────────────────────────────┐ │ RAG 向量数据库 大模型 │ ├─────────────────────────────────────────────────────────┤ │ │ │ 没有 RAG 的大模型: │ │ 用户: 我们公司的退货政策是什么 │ │ AI: 抱歉我不知道贵公司的具体政策... │ │ │ │ 有 RAG 的大模型: │ │ 用户: 我们公司的退货政策是什么 │ │ → Step 1: 从向量知识库检索相关文档 │ │ → Step 2: 把检索到的文档 用户问题一起发给大模型 │ │ AI: 根据公司退货政策2025年3月更新 │ │ 自购买之日起30天内可无理由退货... │ │ │ └─────────────────────────────────────────────────────────┘️ RAG 完整架构┌─────────────────────────────────────────────────────────────┐ │ RAG 完整架构 │ ├─────────────────────────────────────────────────────────────┤ │ │ │ 离线阶段数据入库 │ │ ┌──────┐ ┌──────┐ ┌──────┐ ┌──────┐ ┌──────┐ │ │ │ 文档 │ → │ 分块 │ → │向量化 │ → │ 存储 │ │ │ │ PDF/ │ │Chunk │ │Embed │ │向量DB│ │ │ │ Word │ │ │ │ding │ │ │ │ │ └──────┘ └──────┘ └──────┘ └──────┘ │ │ │ │ 在线阶段检索问答 │ │ ┌──────┐ ┌──────┐ ┌──────┐ ┌──────┐ ┌──────┐ │ │ │ 用户 │ → │查询 │ → │向量 │ → │重排序 │ → │ 大模型 │ │ │ │ 提问 │ │向量化 │ │检索 │ │Rerank│ │ 生成 │ │ │ └──────┘ └──────┘ └──────┘ └──────┘ └──────┘ │ │ ↑ │ │ 检索到的文档 │ │ │ └─────────────────────────────────────────────────────────────┘ 完整代码实现Step 1文档处理 入库fromlangchain.text_splitterimportRecursiveCharacterTextSplitterfromsentence_transformersimportSentenceTransformerfrompymilvusimportCollectionimportnumpyasnp# 1. 加载嵌入模型modelSentenceTransformer(BAAI/bge-m3)# 2. 文档分块text_splitterRecursiveCharacterTextSplitter(chunk_size500,chunk_overlap50,separators[\n\n,\n,。,,])defprocess_document(file_path,collection):处理单个文档并入库# 读取文档withopen(file_path,r,encodingutf-8)asf:textf.read()# 分块chunkstext_splitter.split_text(text)# 向量化embeddingsmodel.encode([frepresent document:{chunk}forchunkinchunks],normalize_embeddingsTrue)# 构造元数据metadatas[{source:file_path,chunk_index:i,total_chunks:len(chunks)}foriinrange(len(chunks))]# 入库data[chunks,# text 字段embeddings.tolist(),# embedding 字段[str(m)forminmetadatas]# metadata 字段]collection.insert(data)collection.flush()print(f✅{file_path}:{len(chunks)}个分块已入库)Step 2检索 生成defrag_query(question,collection,model,llm,top_k5):RAG 问答# 1. 查询向量化query_embeddingmodel.encode(frepresent passage:{question},normalize_embeddingsTrue)# 2. 向量检索collection.load()resultscollection.search(data[query_embedding.tolist()],anns_fieldembedding,param{metric_type:COSINE,params:{ef:128}},limittop_k,output_fields[text,source])# 3. 构造上下文context_parts[]forhitinresults[0]:context_parts.append(f[来源:{hit.entity.get(source)}] f{hit.entity.get(text)})context\n\n.join(context_parts)# 4. 构造 Promptpromptf基于以下参考资料回答用户问题。如果资料中没有相关信息请如实说明。 参考资料{context}用户问题{question}请给出准确、简洁的回答# 5. 调用大模型生成回答answerllm.generate(prompt)return{answer:answer,sources:[hit.entity.get(source)forhitinresults[0]],scores:[hit.distanceforhitinresults[0]]} RAG 进阶优化优化 1查询改写defquery_rewrite(question,llm):查询改写提升检索效果promptf请将以下用户问题改写为更适合检索的形式。 保留核心意图补充可能的同义词和相关概念。 原始问题{question}改写后的检索查询returnllm.generate(prompt)# 使用rewrittenquery_rewrite(怎么退货,llm)# → 商品退货流程 退货政策 退换货规则 退款申请优化 2HyDE假设文档嵌入defhyde_search(question,collection,model,llm):HyDE: 先让 LLM 生成假设性回答用回答去检索# 1. 生成假设性回答hypothetical_answerllm.generate(f请回答以下问题即使不确定也请尝试{question})# 2. 用假设性回答做向量检索query_embeddingmodel.encode(hypothetical_answer)resultscollection.search(data[query_embedding.tolist()],anns_fieldembedding,paramsearch_params,limit5,output_fields[text])returnresults优化 3Reranker 重排序fromsentence_transformersimportCrossEncoder# 加载重排序模型rerankerCrossEncoder(BAAI/bge-reranker-v2-m3)defrerank(query,results,top_k3):对检索结果重排序pairs[(query,doc[text])fordocinresults]scoresreranker.predict(pairs)# 按重排序分数排序rankedsorted(zip(results,scores),keylambdax:x[1],reverseTrue)return[docfordoc,scoreinranked[:top_k]] RAG 优化效果对比方案Recall5回答准确率延迟基础 RAG85.2%72%1.5s 查询改写89.5%78%2.0s HyDE91.3%82%3.0s Reranker93.8%89%2.5s 混合搜索95.2%91%2.8s 本篇核心要点回顾要点说明RAG 核心检索 生成让大模型用你的数据回答完整链路文档分块 → 向量化 → 存储 → 检索 → 生成关键优化查询改写、HyDE、Reranker、混合搜索效果提升优化后准确率可从 72% 提升到 91%下篇预告《向量数据库在推荐系统中的应用从协同过滤到向量召回 》有问题欢迎评论区讨论觉得有用请点赞收藏 作者高炉炼铁智能化技术研究者专注钢铁冶金与人工智能 交叉领域。 如果觉得有帮助请点赞、收藏、转发版权归作者所有未经许可请勿抄袭套用商用(或其它具有利益性行为)。 关注专栏不错过后续精彩内容

相关新闻

SpringBoot+Vue影城管理系统开发实战

SpringBoot+Vue影城管理系统开发实战

1. 项目概述:前后端分离的影城管理系统这个基于SpringBootVueMyBatisMySQL的影城管理系统,是我去年为本地一家连锁影院开发的实战项目。当时客户需要一套能同时满足前台售票、后台管理和数据分析需求的系统,还要支持多终端访问。经过技术选型…

2026/7/27 8:24:54 阅读更多 →
程序员技术变现路径与副业构建指南

程序员技术变现路径与副业构建指南

1. 程序员副业现状与需求分析程序员群体在职业发展过程中普遍面临收入天花板和技术迭代焦虑。根据CSDN平台2023年开发者调查报告显示,超过68%的技术从业者曾尝试或正在从事副业,其中技术变现类副业占比高达83%。这种趋势背后反映的是程序员群体对职业发展…

2026/7/27 8:24:54 阅读更多 →
KVM主题:XML配置热更新与版本管理实践

KVM主题:XML配置热更新与版本管理实践

KVM主题:XML配置热更新与版本管理实践 在虚拟化技术日益普及的今天,KVM(Kernel-based Virtual Machine)作为Linux内核中的一个模块,为虚拟机管理提供了强大的支持。对于运行在KVM之上的虚拟机而言,其配置文…

2026/7/27 8:24:54 阅读更多 →

最新新闻

全平台视频元数据解析API调用限制与用量边界全解析

全平台视频元数据解析API调用限制与用量边界全解析

概述 在全平台视频元数据解析服务的日常使用中,调用限制与用量边界是开发者最先接触到的“隐形墙”。理解并妥善处理这些边界,能有效避免因请求报错或频控导致的业务中断。本文从接口设计出发,逐层解析频率限制、参数约束、响应模式选择、错…

2026/7/27 8:38:00 阅读更多 →
1条慢SQL拖死5000并发?我用C# Polly V8 + 金仓内核“断尾参数“,把微服务雪崩的30秒假死压到0毫秒

1条慢SQL拖死5000并发?我用C# Polly V8 + 金仓内核“断尾参数“,把微服务雪崩的30秒假死压到0毫秒

🔥关注墨瑾轩,带你探索编程的奥秘!🚀 🔥超萌技术攻略,轻松晋级编程高手🚀 🔥技术宝库已备好,就等你来挖掘🚀 🔥订阅墨瑾轩,智趣学习不…

2026/7/27 8:38:00 阅读更多 →
工业级纸箱检测数据集与应用实践

工业级纸箱检测数据集与应用实践

1. 纸箱检测数据集概述 纸箱检测数据集是一个专门用于训练计算机视觉模型的工业级数据集,包含3439张高质量图像,覆盖纸箱在物流和仓储环境中的各种状态。这个数据集特别适合开发智能分拣系统、质量检测算法和仓储管理解决方案。 数据集中的每张图像都经…

2026/7/27 8:38:00 阅读更多 →
Flutter+OpenHarmony教育应用开发实践

Flutter+OpenHarmony教育应用开发实践

1. 项目概述Flutter for OpenHarmony教育百科项目是一个将Flutter跨平台开发框架与OpenHarmony操作系统深度结合的实践案例。作为一名长期从事移动开发的工程师,我发现这个组合在教育类应用开发中展现出独特的优势。Flutter的跨平台能力加上OpenHarmony的分布式特性…

2026/7/27 8:38:00 阅读更多 →
人工智能训练师职业发展路线|执行者到专家到架构者+技术/管理/创业三路径

人工智能训练师职业发展路线|执行者到专家到架构者+技术/管理/创业三路径

摘要:人工智能训练师职业发展路线:从执行者(0-2年)、专家(3-5年)到架构者(5年+)三重境界,技术线、管理线、创业线三条路径详解。技术线薪资60-80K+,管理线走向AI产品负责人,创业线可做AI咨询和标注外包服务。 一、AI训练师的职业天花板在哪? 经常有人问我:"…

2026/7/27 8:38:00 阅读更多 →
运算符详解 C语言

运算符详解 C语言

算术操作符:、-、*、/、%算术操作符概述C语言中为了方便运算,提供了一系列操作符,其中有一组操作符叫:算术操作符。分别是: - * / %,这些操作符都是双目操作符。(都是有2个操作数的,…

2026/7/27 8:37:00 阅读更多 →

日新闻

【JAVA毕设源码分享】基于SpringBoot的社区智能垃圾管理系统的设计与实现(程序+文档+代码讲解+一条龙定制)

【JAVA毕设源码分享】基于SpringBoot的社区智能垃圾管理系统的设计与实现(程序+文档+代码讲解+一条龙定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/7/27 0:00:54 阅读更多 →
SPI实战指南:从时钟模式到寄存器配置,解决嵌入式通信难题

SPI实战指南:从时钟模式到寄存器配置,解决嵌入式通信难题

1. 项目概述:从寄存器手册到实战指南 如果你手头有一份类似德州仪器(TI)TMS320x240xA系列DSP的SPI模块技术手册,看着里面密密麻麻的寄存器位定义、时序图和公式,是不是感觉头大?这份资料虽然权威&#xff0…

2026/7/27 0:00:54 阅读更多 →
【JAVA毕设源码分享】基于springboot的水果购物管理系统的设计与实现(程序+文档+代码讲解+一条龙定制)

【JAVA毕设源码分享】基于springboot的水果购物管理系统的设计与实现(程序+文档+代码讲解+一条龙定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/7/27 0:00:54 阅读更多 →

周新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档,可以直接使用!系统支持图片、视频、摄像头等多种方式检测裂缝,功能强大实用。 1数据集6000张 8各类别

2026/7/27 4:33:59 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像! pubg绝地求生目标检测数据集 1分类:e_body,14905个标签,txt格式 共计14244张图,99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/7/27 6:31:56 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别: allies enemy tag图片总量:7247张训练集:5139张验证集:1425张测试集:683张标注状态:全部已标注,即拿即用数据格式:支持YOLO格式及其他格式&#…

2026/7/27 4:01:12 阅读更多 →

月新闻