RAG 落地实战——从文档解析到向量检索到重排序的代码示例
📅 2026/7/10 3:25:39
👁️ 次浏览
要构建一个工业级标准的 RAG检索增强生成系统核心链路通常遵循文档加载 → 文本分块 → 向量检索粗排 → 重排序精排 → LLM 生成的流程。下面我将为你提供一个基于 Python 和 LangChain 框架的完整实战代码示例。核心环境准备与基础配置首先我们需要加载必要的库并配置文本分块和向量检索的参数。合理的分块策略是保证检索质量的第一步。importosimporttorchfromdotenvimportload_dotenvfromlangchain.text_splitterimportRecursiveCharacterTextSplitterfromlangchain_community.document_loadersimportTextLoaderfromlangchain_community.vectorstoresimportFAISSfromlangchain_community.embeddingsimportHuggingFaceBgeEmbeddings### 加载环境变量load_dotenv()### 全局配置DOC_PATH./long_document.txtFAISS_PATH./faiss_rag_rerank_db分块配置滑动窗口保证上下文连贯 CHUNK_SIZE800CHUNK_OVERLAP300检索配置 TOP_K_COARSE20# 粗检索召回20条TOP_K_FINE5# 重排序后保留5条重排序模型 RERANK_MODELBAAI/bge-reranker-v2-m3文档解析与向量库构建将原始文档进行分块并使用 Embedding 模型将其转化为向量存入 FAISS 向量数据库中。defbuild_vector_db():loaderTextLoader(DOC_PATH,encodingutf-8)docsloader.load()# 文本分块splitterRecursiveCharacterTextSplitter(chunk_sizeCHUNK_SIZE,chunk_overlapCHUNK_OVERLAP)chunkssplitter.split_documents(docs)# 加载 BGE 嵌入模型并构建向量库embeddingHuggingFaceBgeEmbeddings(model_nameBAAI/bge-small-zh-v1.5,model_kwargs{device:cudaiftorch.cuda.is_available()elsecpu},encode_kwargs{normalize_embeddings:True})dbFAISS.from_documents(chunks,embedding)db.save_local(FAISS_PATH)print(✅ 向量库构建完成)returndb多路召回与重排序核心优化为了提升检索精度生产环境中通常会采用“混合检索”向量检索 BM25 关键词检索随后引入重排序模型如 BGE-Reranker对候选结果进行精细打分。fromlangchain.retrieversimportBM25Retriever,EnsembleRetrieverfromlangchain_community.cross_encodersimportHuggingFaceCrossEncoderfromlangchain.retrieversimportContextualCompressionRetrieverfromlangchain.retrievers.document_compressorsimportCrossEncoderRerankdefget_reranked_retriever(split_docs):# 1. 初始化 BM25 稀疏召回bm25_retrieverBM25Retriever.from_documents(split_docs)bm25_retriever.k10# 2. 初始化稠密向量召回vector_retrievervector_db.as_retriever(search_kwargs{k:10})# 3. 融合两路召回结果混合检索ensemble_retrieverEnsembleRetriever(retrievers[bm25_retriever,vector_retriever],weights[0.4,0.6])# 4. 加载 BGE 重排序模型筛选最相关的 Top-Nrerank_modelHuggingFaceCrossEncoder(model_nameRERANK_MODEL)compressorCrossEncoderRerank(modelrerank_model,top_nTOP_K_FINE)# 5. 组合成带重排序的检索器compression_retrieverContextualCompressionRetriever(base_retrieverensemble_retriever,base_compressorcompressor)returncompression_retrieverLLM 生成与防幻觉控制最后将重排序后的高质量上下文与用户问题结合通过精心设计的 Prompt 让大模型生成答案并严格限制其“幻觉”。fromlangchain.promptsimportPromptTemplatefromlangchain_openaiimportChatOpenAIdefgenerate_answer(query,context_docs):# 私有知识库专属 Prompt 模板template你是一个专业的企业内部助手你需要根据提供的上下文信息回答用户的问题。 如果你不知道答案就直接说你不知道绝对不要编造答案。 上下文信息如下: {context} 用户问题: {question} 回答:promptPromptTemplate.from_template(template)# 拼接上下文contextnn.join([doc.page_contentfordocincontext_docs])formatted_promptprompt.format(contextcontext,questionquery)# 调用大模型生成设置低 temperature 降低随机性llmChatOpenAI(modelgpt-3.5-turbo,temperature0.1)responsellm.invoke(formatted_prompt)returnresponse.content 生产环境避坑与优化建议防幻觉与溯源在 Prompt 中必须强调“只根据资料回答”并在返回答案时附带来源文档信息如来源《员工报销制度》第 2 条这能大幅提升用户信任度并便于排查错误。。缓存策略对于“营业时间”、“报销流程”等高频问题建议使用 Redis 等对检索结果或最终答案进行缓存以降低响应延迟和 API 调用成本。模型选择重排序模型Reranker是提升准确率的关键。实测中BGE-Reranker-v2-m3 的效果通常优于通用的 Cross-Encoder生产环境建议优先采用。
🚀 30款热门AI模型一站整合,DeepSeek/GLM/Qwen 随心用,限时 5 折。 👉 点击领海量免费额度 这次我们来看一个针对 Linux 虚拟机安装与激活的完整解决方案。对于开发者、运维人员或学生而言,在 Windows 或 macOS 上搭…
📅 2026/7/10 3:25:39
1. 项目概述:Apple安全适配器,AI对齐的新解法最近,Apple在AI安全领域的一项研究引起了我的注意,他们提出了一个名为“解耦安全适配器”的架构。这听起来有点技术黑话的味道,但说白了,它解决的是当前大模型应…
📅 2026/7/10 3:25:39
2026年论文降AI率工具已从“基础改写”升级为智能化、多维度的学术合规优化系统,核心评价维度涵盖AI痕迹识别精度、语义逻辑连贯性、格式合规性、查重适配能力、多语言支持及用户操作便捷性。本次测评覆盖6款主流工具,涵盖中文与英文场景,适用…
📅 2026/7/10 3:25:39
进入Q3,企业的H2预算规划与年中复盘陆续启动,原型工具栈是否仍适配团队规模和业务节奏,成为项目经理和技术负责人重点审视的议题。AI原型设计工具已从尝鲜阶段走向团队标配,选型时若只看单点功能,容易在成本、协作、数…
📅 2026/7/10 16:45:02
Winbindex API 使用指南:自动化获取 Windows 二进制文件信息 【免费下载链接】winbindex An index of Windows binaries, including download links for executables such as exe, dll and sys files 项目地址: https://gitcode.com/gh_mirrors/wi/winbindex …
📅 2026/7/10 16:45:02
管理学论文降AI工具免费推荐:2026年管理学毕业论文降AI免费4.8元知网达标完整指南
答辩前夕AI率38%,学校要求15%以下。
用嘎嘎降AI(www.aigcleaner.com),4.8元,一次搞定。管理学论文降AI完整处理方案在下…
📅 2026/7/10 16:45:02
终极Windows Defender移除指南:彻底优化系统性能的专业解决方案 【免费下载链接】windows-defender-remover A tool which is uses to remove Windows Defender in Windows 8.x, Windows 10 (every version) and Windows 11. 项目地址: https://gitcode.com/gh_mi…
📅 2026/7/10 16:45:02
Raveberry自动化脚本:批量导入音乐和播放列表管理 【免费下载链接】raveberry A multi-user music server with a focus on participation 项目地址: https://gitcode.com/gh_mirrors/ra/raveberry
Raveberry是一个专注于多人参与的音乐服务器,通…
📅 2026/7/10 16:45:02
beatoraja核心功能解析:探索这款节奏游戏的独特魅力 【免费下载链接】beatoraja Cross-platform rhythm game based on Java and libGDX. 项目地址: https://gitcode.com/gh_mirrors/be/beatoraja
beatoraja是一款基于Java和libGDX开发的跨平台节奏游戏&…
📅 2026/7/10 16:44:01
一、为什么接口自动化测试,适合用AI赋能?
大家可自行先思考一个问题:
AI赋能测试全流程,为什么优先推荐从接口自动化切入?
有三个典型原因:
接口输入结构化,AI最擅长"吃"
接口有OpenA…
📅 2026/7/10 0:00:53
终极原神FPS解锁器完整指南:轻松突破60帧限制 【免费下载链接】genshin-fps-unlock unlocks the 60 fps cap 项目地址: https://gitcode.com/gh_mirrors/ge/genshin-fps-unlock
原神FPS解锁器是一款专为《原神》玩家设计的开源工具,通过先进的Wri…
📅 2026/7/10 0:00:53
YesPlayMusic:如何用高颜值播放器重塑你的网易云音乐体验?🎵 【免费下载链接】YesPlayMusic 高颜值的第三方网易云播放器,支持 Windows / macOS / Linux :electron: 项目地址: https://gitcode.com/gh_mirrors/ye/YesPlayMusic…
📅 2026/7/10 0:00:53
1. 项目背景与核心需求 在嵌入式系统开发中,快速精确的数据检索是一个常见但极具挑战性的需求。特别是在工业控制、医疗设备和物联网终端等场景下,系统往往需要在毫秒级时间内完成关键参数的读取和写入操作。传统基于Flash存储的方案存在擦写次数有限、操…
📅 2026/7/9 15:10:35
1. 工业电流环信号传输的基础认知在工业自动化领域,4-20mA电流环传输技术已经持续服役超过半个世纪。这种看似简单的信号传输方式之所以能经久不衰,核心在于其独特的抗干扰能力——电流信号在长距离传输时几乎不受线路电阻和电压波动的影响。我曾在化工厂…
📅 2026/7/9 14:14:01
最近在项目里尝试用 YOLO 做目标检测,从环境搭建到模型训练,再到推理部署,整个过程踩了不少坑。网上的资料虽然多,但要么版本老旧,要么步骤零散不成体系,对于刚入门的新手来说,很容易卡在某个环…
📅 2026/7/9 15:10:36
目录
第一步:选对模板,省心一半
第二步:打开扫码点餐功能
开启功能按钮
桌台管理与桌码生成
第三步:个性化设计,打造品牌感
调整点餐页面
设置点餐规则 你还在让顾客站着排队点餐吗?2025年ÿ…
📅 2026/7/9 15:10:36
在业务中快速构建一个能理解私有文档、准确回答专业问题的智能助手,是很多开发团队面临的共同挑战。传统方案往往需要从零开始搭建复杂的 RAG(检索增强生成)系统,涉及文档解析、向量化、检索、大模型调用等多个环节,整…
📅 2026/7/9 15:10:36
FAE放射组学分析工具:医学影像特征探索的完整解决方案 【免费下载链接】FAE FeAture Explorer 项目地址: https://gitcode.com/gh_mirrors/fae/FAE
你是否曾经面对海量医学影像数据感到无从下手?想要从CT、MRI等影像中提取有价值的定量特征&#…
📅 2026/7/9 15:10:36