本文介绍了RAG系统中重排序策略通过重排序策略对初始检索的候选文档重新打分排序将最相关的内容提升到前列从而提升大模型的上下文质量。文章详细阐述了RRF、RankLLM和CrossEncoder三种重排序方法的核心原理、优势与劣势并提供了相应的代码样例。通过学习这些方法开发者可以更好地优化检索结果提升大模型的性能和用户体验。“通过重排序策略对初始检索的候选文档重新打分排序将最相关的内容提升到前列从而提升大模型的上下文质量。”RAG 系统中的重排序Reranking是对初始检索结果进行二次排序的核心后处理环节。初始检索通常依赖向量相似度或关键词匹配返回的结果在语义相关性上存在噪声重排序通过更精细的相关性判断模型对候选文档重新打分将最相关的内容提升到前列从而提高大模型接收到的上下文质量。下面我们就来分享下重排序的几种方法1、RRF重排RRFReciprocal Rank Fusion是一种简单而有效的多检索结果融合算法它通过将多个检索查询的结果进行排名合并来提高检索的准确性和覆盖面。核心思想对于同一个用户问题生成多个不同角度的查询分别对每个查询进行检索使用RRF算法将多个检索结果列表融合成一个统一的排序列表RRF算法为每个文档分配分数score 1/(rank k)其中rank是该文档在某个结果列表中的排名优势实现简单、速度快、没有算力成本劣势缺乏深层语义理解精度弱于模型类重排算法流程图代码样例import os import uuid from dotenv import load_dotenv from openai import OpenAI from langchain_classic.text_splitter import RecursiveCharacterTextSplitter from langchain_community.vectorstores import Milvus from langchain_classic.prompts import ChatPromptTemplate from langchain_core.output_parsers import StrOutputParser from langchain_core.embeddings import Embeddings from langchain_core.documents import Document from langchain_openai import ChatOpenAI from langchain_classic.load import dumps, loads load_dotenv() # 配置初始化 OPENAI_API_KEY os.getenv(GLM_API_KEY) OPENAI_BASE_URL os.getenv(GLM_BASE_URL) EMBEDDING_MODEL os.getenv(GLM_EMBEDDING_MODEL, embedding-3) MILVUS_URI os.getenv(MILVUS_URI, http://localhost:19530) COLLECTION_NAME finance_report_rrf # 兼容 LangChain 的嵌入适配器 class OpenAIEmbeddingsAdapter(Embeddings): def __init__(self, client, model): self.client client self.model model def embed_documents(self, texts): response self.client.embeddings.create(inputtexts, modelself.model) return [item.embedding for item in response.data] def embed_query(self, text): return self.embed_documents([text])[0] client OpenAI(api_keyOPENAI_API_KEY, base_urlOPENAI_BASE_URL) embed_model OpenAIEmbeddingsAdapter(client, EMBEDDING_MODEL) # 文档加载 def parse_finance_document(): 构建财务分析示例文档 texts [ 悦享餐饮2020-2023财务综合分析报告短期偿债能力分析。 2020~2023年间悦享餐饮速动比率分别为2.85、2.07、1.48和1.53 流动比率分别为2.12、2.24、1.61和1.68整体呈先降后升趋势。 2022年受非流动资产增加影响流动比率大幅回落 2023年加强应付账款管控流动资产增加短期偿债能力略有改善。, 悦享餐饮2020-2023财务综合分析报告长期偿债能力分析。 资产负债率先升后降21.56%-22.03%-28.15%-26.87% 产权比率同步变动28.0%-39.9%-36.7%。 2022年受外部冲击应付账款大增资产负债率攀升至28.15% 2023年优化资产结构总资产增至188652.47万元负债回落。, 悦享餐饮2020-2023财务综合分析报告营运能力分析。 应收账款周转率从25.12次降至15.34次后回升至18.65次 存货周转率波动较大10.87-8.23-12.35-11.68。, 悦享餐饮2020-2023财务综合分析报告盈利能力分析。 2020~2021年毛利率稳定在60%左右2022年大幅下滑至-10.23%2023年回升至8.65%。 净资产收益率同步下降主要受门店扩张成本和疫情影响。, 悦享餐饮2020-2023财务综合分析报告发展能力分析。 2022年新增5家门店成本3256.87万元加剧资金压力2023年暂停扩张。 营业收入增长率从2021年的15.2%下降至2022年的-8.3%2023年恢复至5.1%。, ] return [Document(page_contentt) for t in texts] def reciprocal_rank_fusion(results: list[list], k60): RRFReciprocal Rank Fusion算法实现 参数 results (list[list]): 多个检索结果列表每个列表包含按相关性排序的文档 k (int): RRF算法的调节参数默认值60经验值 返回 list: 融合后的(文档, 分数)元组列表按分数降序排序 算法原理 score 1 / (rank k)同一文档出现在多个列表中时累加分数 fused_scores {} for docs in results: for rank, doc in enumerate(docs): doc_str dumps(doc) if doc_str not in fused_scores: fused_scores[doc_str] 0 fused_scores[doc_str] 1 / (rank k) reranked_results [ (loads(doc), score) for doc, score in sorted(fused_scores.items(), keylambda x: x[1], reverseTrue) ] return reranked_results # 构建向量索引 print(正在加载文档...) docs parse_finance_document() text_splitter RecursiveCharacterTextSplitter(chunk_size300, chunk_overlap50) splits text_splitter.split_documents(docs) print(f文档已切分为 {len(splits)} 个文本块) print(正在创建 Milvus 向量索引...) vectorstore Milvus( embedding_functionembed_model, collection_nameCOLLECTION_NAME, connection_args{uri: MILVUS_URI}, auto_idTrue, ) vectorstore.add_documents(splits) retriever vectorstore.as_retriever(search_kwargs{k: 3}) print(向量索引创建完成) # 配置多查询生成器 template 你是一个帮助用户生成多个搜索查询的助手。 请根据以下问题生成4个不同角度的相关搜索查询这些查询应该 1. **从不同的角度理解原问题** 2. **使用不同的关键词和表达方式** 3. **覆盖问题的不同方面** 原问题{question} 请生成4个相关的搜索查询 prompt_rag_fusion ChatPromptTemplate.from_template(template) llm ChatOpenAI( modelglm-4, temperature0, api_keyOPENAI_API_KEY, base_urlOPENAI_BASE_URL ) generate_queries ( prompt_rag_fusion | llm | StrOutputParser() | (lambda x: [q.strip() for q in x.split(/n) if q.strip()]) ) # 测试 RRF 重排 questions [ 悦享餐饮的短期偿债能力怎么样, 2022年毛利率为什么下滑, 门店扩张对财务有什么影响, ] for idx, question in enumerate(questions, 1): print(f/n{*50}) print(f问题 {idx}: {question}) print(*50) # 生成多个查询 queries generate_queries.invoke({question: question}) print(f生成了 {len(queries)} 个查询) for i, query in enumerate(queries, 1): print(f 查询 {i}: {query}) # 对每个查询进行检索 all_results [] for query in queries: query_docs retriever.invoke(query) all_results.append(query_docs) # 使用RRF算法融合结果 reranked_docs reciprocal_rank_fusion(all_results) # 展示最终结果 print(f/nRRF重排结果前3个) for i, (doc, score) in enumerate(reranked_docs[:3], 1): content_preview doc.page_content[:200].replace(/n, ).strip() print(f/n 排名 {i} (RRF分数: {score:.4f}):) print(f 内容: {content_preview}...) if doc.metadata: print(f 来源: {doc.metadata.get(source, 未知)})2、RankLLM重排利用大语言模型LLM的深度语言理解能力进行文档重排通过prompt engineering引导LLM对每个文档进行相关性评分。优势语义理解最深、推理能力强、可解释性好劣势成本高LLM API调用、延迟大流程图代码样例importos from dotenvimportload_dotenv from openaiimportOpenAI from langchain_community.vectorstoresimportMilvus from langchain_core.embeddingsimportEmbeddings from langchain_core.documentsimportDocument from langchain_openaiimportChatOpenAI from langchain_core.promptsimportChatPromptTemplate from langchain_core.output_parsersimportStrOutputParser load_dotenv()# 配置初始化 OPENAI_API_KEYos.getenv(GLM_API_KEY)OPENAI_BASE_URLos.getenv(GLM_BASE_URL)EMBEDDING_MODELos.getenv(GLM_EMBEDDING_MODEL,embedding-3)MILVUS_URIos.getenv(MILVUS_URI,http://localhost:19530)COLLECTION_NAMEfinance_report_rankllmclass OpenAIEmbeddingsAdapter(Embeddings): def __init__(self, client, model): self.clientclient self.modelmodel def embed_documents(self, texts): responseself.client.embeddings.create(inputtexts,modelself.model)return[item.embeddingforiteminresponse.data]def embed_query(self, text):returnself.embed_documents([text])[0]clientOpenAI(api_keyOPENAI_API_KEY,base_urlOPENAI_BASE_URL)embed_modelOpenAIEmbeddingsAdapter(client, EMBEDDING_MODEL)# 文档加载 texts[悦享餐饮2020-2023财务综合分析报告短期偿债能力分析。2020~2023年间速动比率分别为2.85、2.07、1.48和1.53流动比率分别为2.12、2.24、1.61和1.68整体呈先降后升趋势。,悦享餐饮2020-2023财务综合分析报告长期偿债能力分析。资产负债率先升后降21.56%-22.03%-28.15%-26.87%2022年受外部冲击应付账款大增资产负债率攀升至28.15%。,悦享餐饮2020-2023财务综合分析报告盈利能力分析。2020~2021年毛利率稳定在60%左右2022年大幅下滑至-10.23%2023年回升至8.65%。净资产收益率同步下降主要受门店扩张成本和疫情影响。,悦享餐饮2020-2023财务综合分析报告发展能力分析。2022年新增5家门店成本3256.87万元加剧资金压力2023年暂停扩张。营业收入增长率从2021年的15.2%下降至2022年的-8.3%2023年恢复至5.1%。,悦享餐饮2020-2023财务综合分析报告营运能力分析。应收账款周转率从25.12次降至15.34次后回升至18.65次存货周转率波动较大10.87-8.23-12.35-11.68。,]docs[Document(page_contentt)fortintexts]# 创建 Milvus 向量检索器 vectorstoreMilvus(embedding_functionembed_model,collection_nameCOLLECTION_NAME,connection_args{uri:MILVUS_URI},auto_idTrue,)vectorstore.add_documents(docs)retrievervectorstore.as_retriever(search_kwargs{k:5})# LLM 重排器 grade_promptChatPromptTemplate.from_messages([(system,你是一个文档相关性评分员。根据用户问题对文档进行评分。\n只输出一个0-10的整数分数10表示高度相关0表示完全无关。),(human,用户问题{question}\n\n文档内容{document}\n\n相关性分数0-10),])llmChatOpenAI(modelglm-4,temperature0,api_keyOPENAI_API_KEY,base_urlOPENAI_BASE_URL)gradergrade_prompt|llm|StrOutputParser()def llm_rerank(query, docs,top_n3): LLM 重排对每个文档调用 LLM 评分按分数降序返回前 top_n 个 参数 query: 用户查询 docs: 候选文档列表 top_n: 返回文档数 返回 list: 按 LLM 评分排序的(文档, 分数)元组列表 scored_docs[]fordocindocs: try: score_strgrader.invoke({question:query,document:doc.page_content})scoreint(score_str.strip())except(ValueError, TypeError): score0scored_docs.append((doc,score))scored_docs.sort(keylambda x: x[1],reverseTrue)returnscored_docs[:top_n]# 执行查询和重排 query2022年毛利率为什么下滑# 第一阶段Milvus 向量检索候选文档candidate_docsretriever.invoke(query)# 第二阶段LLM 重排rerankedllm_rerank(query, candidate_docs,top_n3)print(f查询: {query}\n)print(LLM 重排结果前3个)fori,(doc, score)inenumerate(reranked,1): print(f\n排名 {i} (相关性分数: {score}/10):)print(f 内容: {doc.page_content[:150]}...)ifdoc.metadata: print(f 来源: {doc.metadata.get(source, 未知)})3、CrossEncoder重排CrossEncoder是一种基于BERT的双向编码器重排模型将查询和文档作为一个整体输入利用[CLS]标记的输出预测相关性分数能够捕捉查询与文档之间的深层交互。优势精度高、语义理解强劣势计算开销大每个查询-文档对需单独编码不适合第一阶段检索从海量的文档里快速粗筛选出少量的候选文档流程图代码样例from transformers import AutoTokenizer, AutoModelForSequenceClassification import torch # 1. 加载预训练的CrossEncoder模型 model_name cross-encoder/ms-marco-MiniLM-L-12-v2 tokenizer AutoTokenizer.from_pretrained(model_name) model AutoModelForSequenceClassification.from_pretrained(model_name) def encode_and_score(query, docs): 计算查询与每个文档的相关性分数 输入格式: [CLS] query [SEP] document [SEP] 分数越高表示相关性越强 scores [] for doc in docs: inputs tokenizer( query, doc, return_tensorspt, truncationTrue, max_length512, paddingmax_length ) with torch.no_grad(): outputs model(inputs) score outputs.logits[0][0].item() scores.append(score) return scores # 2. 测试数据财务分析场景 query 悦享餐饮2022年毛利率为什么下滑 documents [ 2020~2021年毛利率稳定在60%左右2022年大幅下滑至-10.23%2023年回升至8.65%。 净资产收益率同步下降主要受门店扩张成本和疫情影响。, 2022年新增5家门店成本3256.87万元加剧资金压力2023年暂停扩张。 营业收入增长率从2021年的15.2%下降至2022年的-8.3%。, 2020~2023年间速动比率分别为2.85、2.07、1.48和1.53 流动比率分别为2.12、2.24、1.61和1.68整体呈先降后升趋势。, 资产负债率先升后降21.56%-22.03%-28.15%-26.87% 2022年受外部冲击应付账款大增资产负债率攀升至28.15%。, ] # 3. 执行CrossEncoder重排 scores encode_and_score(query, documents) ranked_docs sorted(zip(documents, scores), keylambda x: x[1], reverseTrue) # 4. 输出重排结果 print(f查询: {query}/n) print(CrossEncoder重排结果按相关性分数降序) for rank, (doc, score) in enumerate(ranked_docs, start1): if score 0: level 高度相关 elif score -2: level 中等相关 else: level 低相关 print(f/n 排名 {rank} (分数: {score:.4f}, {level}):) print(f {doc[:100]}...)总结重排算法核心原理核心优势主要劣势典型使用场景RRF多维度查询检索通过公式1/(rankk)融合排名得分实现简单、速度快、无算力成本无深层语义理解精度偏低依赖查询质量多路召回合并、高并发快速检索RankLLM借助大模型 提示词逐文档人工规则化打分排序语义理解极强、具备逻辑推理、结果可解释调用成本高、接口延迟大专业问答、复杂推理、需要结果解释CrossEncoder拼接问句与文档整体编码依靠 BERT 双向交互计算相关分语义匹配精准、相关性判别能力强逐对编码耗时高、算力开销大搜索业务精排、RAG 少量候选文档排序总的来说通过重排序提升检索结果排序精度将原始的初始检索结果打磨为高质量的生成上下文。最后2026年技术圈的分化愈发明显降薪裁员潮持续蔓延传统开发、测试等岗位大批缩水不少从业者陷入职业焦虑与之形成鲜明对比的是AI大模型相关岗位迎来疯狂扩招薪资逆势飙升150%大厂更是直接开出70-100W年薪疯抢具备实战能力的大模型人才甚至放宽年龄限制只求能快速落地技术、创造价值很多程序员、职场新人纷纷入局大模型领域绝非盲目跟风而是实实在在看到了不可替代的价值优势这也是2026年最值得抓住的职业风口1、窗口期红利入门门槛友好不同于成熟赛道的“内卷式招聘”2026年大模型人才缺口巨大简历只要达标掌握基础AI应用具备简单项目经验年龄、学历均非硬性要求小白可快速入门转行程序员也能无缝衔接2、技术可复用上手速度翻倍如果你有前后端开发、测试、数据分析等基础在大模型落地、系统部署、Prompt工程等环节会更具优势无需从零开始复用原有技术能力就能快速进阶3、懂业务更吃香竞争力翻倍单纯懂技术已不够2026年大厂更看重“技术业务”的复合型人才有垂直领域金融、医疗、工业等经验者能精准定位模型落地痛点薪资比纯技术岗高出30%以上更重要的是即便没有转型需求用AI大模型工具为工作赋能、提升效率也已经成为80%企业的硬性要求——不会用大模型提效未来很可能被行业淘汰那么2026年小白/程序员该如何高效学习大模型很多人想入门大模型却陷入两大困境要么到处搜集零散资料不成体系越学越懵要么被收费高昂的课程割韭菜花了钱却学不到实战技能白白浪费时间走弯路。今天就给大家精心整理了一份2026年最新、免费、系统化的AI大模型学习资源包覆盖从零基础入门到商业实战、从理论沉淀到面试通关的全流程所有资料均已整理归档无需拼凑直接领取就能上手学习小白可照做程序员可进阶扫码免费领取全部内容1、大模型系统化学习路线这份学习路线结合2026年行业趋势和新手学习规律由行业专家精心设计从零基础到精通每一步都有明确指引帮你节省80%的无效学习时间少走弯路、高效进阶避免踩坑。2、从0到进阶大模型学习视频教程从入门到进阶这里都有跟着老师学习事半功倍。3、大模型学习书籍电子文档涵盖2026年最新技术要点包括基础入门、Transformer核心原理、Prompt工程、RAG实战、模型微调与部署等内容4、AI大模型最新行业报告报告包含腾讯、阿里、甲子光年等权威机构发布的核心内容还有2026年中文大模型基准测评报告、AI Agent行业研究报告等帮你站在行业前沿把握技术风口。5、大模型项目实战配套源码项目包含Deepseek R1、GPT项目、MCP项目、RAG实战等热门方向还有视频配套代码手把手教你从0到1完成项目开发既能练手提升技术又能丰富简历为求职和职业发展加分。6、2026大模型大厂面试真题2026年大模型面试已全面升级不再单纯考察基础原理而是转向侧重技术落地和业务结合的综合考察很多程序员和新手因为缺乏针对性准备明明技术不错却在面试中失利。适用人群四阶段学习规划共90天可落地执行第一阶段10天初阶应用该阶段让大家对大模型 AI有一个最前沿的认识对大模型 AI 的理解超过 95% 的人可以在相关讨论时发表高级、不跟风、又接地气的见解别人只会和 AI 聊天而你能调教 AI并能用代码将大模型和业务衔接。大模型 AI 能干什么大模型是怎样获得「智能」的用好 AI 的核心心法大模型应用业务架构大模型应用技术架构代码示例向 GPT-3.5 灌入新知识提示工程的意义和核心思想Prompt 典型构成指令调优方法论思维链和思维树Prompt 攻击和防范…第二阶段30天高阶应用该阶段我们正式进入大模型 AI 进阶实战学习学会构造私有知识库扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架抓住最新的技术进展适合 Python 和 JavaScript 程序员。为什么要做 RAG搭建一个简单的 ChatPDF检索的基础概念什么是向量表示Embeddings向量数据库与向量检索基于向量检索的 RAG搭建 RAG 系统的扩展知识混合检索与 RAG-Fusion 简介向量模型本地部署…第三阶段30天模型训练恭喜你如果学到这里你基本可以找到一份大模型 AI相关的工作自己也能训练 GPT 了通过微调训练自己的垂直大模型能独立训练开源多模态大模型掌握更多技术方案。到此为止大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗为什么要做 RAG什么是模型什么是模型训练求解器 损失函数简介小实验2手写一个简单的神经网络并训练它什么是训练/预训练/微调/轻量化微调Transformer结构简介轻量化微调实验数据集的构建…第四阶段20天商业闭环对全球大模型从性能、吞吐量、成本等方面有一定的认知可以在云端和本地等多种环境下部署大模型找到适合自己的项目/创业方向做一名被 AI 武装的产品经理。硬件选型带你了解全球大模型使用国产大模型服务搭建 OpenAI 代理热身基于阿里云 PAI 部署 Stable Diffusion在本地计算机运行大模型大模型的私有化部署基于 vLLM 部署大模型案例如何优雅地在阿里云私有部署开源大模型部署一套开源 LLM 项目内容安全互联网信息服务算法备案…扫码免费领取全部内容7、这些资料真的有用吗这份资料由我和鲁为民博士(北京清华大学学士和美国加州理工学院博士)共同整理现任上海殷泊信息科技CEO其创立的MoPaaS云平台获Forrester全球’强劲表现者’认证服务航天科工、国家电网等1000企业以第一作者在IEEE Transactions发表论文50篇获NASA JPL火星探测系统强化学习专利等35项中美专利。本套AI大模型课程由清华大学-加州理工双料博士、吴文俊人工智能奖得主鲁为民教授领衔研发。资料内容涵盖了从入门到进阶的各类视频教程和实战项目无论你是小白还是有些技术基础的技术人员这份资料都绝对能帮助你提升薪资待遇转行大模型岗位。这份完整版的大模型 AI 学习资料已经上传CSDN朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】
收藏必备!小白程序员快速掌握RAG系统中重排序策略,提升大模型上下文质量
发布时间:2026/5/20 19:12:01
本文介绍了RAG系统中重排序策略通过重排序策略对初始检索的候选文档重新打分排序将最相关的内容提升到前列从而提升大模型的上下文质量。文章详细阐述了RRF、RankLLM和CrossEncoder三种重排序方法的核心原理、优势与劣势并提供了相应的代码样例。通过学习这些方法开发者可以更好地优化检索结果提升大模型的性能和用户体验。“通过重排序策略对初始检索的候选文档重新打分排序将最相关的内容提升到前列从而提升大模型的上下文质量。”RAG 系统中的重排序Reranking是对初始检索结果进行二次排序的核心后处理环节。初始检索通常依赖向量相似度或关键词匹配返回的结果在语义相关性上存在噪声重排序通过更精细的相关性判断模型对候选文档重新打分将最相关的内容提升到前列从而提高大模型接收到的上下文质量。下面我们就来分享下重排序的几种方法1、RRF重排RRFReciprocal Rank Fusion是一种简单而有效的多检索结果融合算法它通过将多个检索查询的结果进行排名合并来提高检索的准确性和覆盖面。核心思想对于同一个用户问题生成多个不同角度的查询分别对每个查询进行检索使用RRF算法将多个检索结果列表融合成一个统一的排序列表RRF算法为每个文档分配分数score 1/(rank k)其中rank是该文档在某个结果列表中的排名优势实现简单、速度快、没有算力成本劣势缺乏深层语义理解精度弱于模型类重排算法流程图代码样例import os import uuid from dotenv import load_dotenv from openai import OpenAI from langchain_classic.text_splitter import RecursiveCharacterTextSplitter from langchain_community.vectorstores import Milvus from langchain_classic.prompts import ChatPromptTemplate from langchain_core.output_parsers import StrOutputParser from langchain_core.embeddings import Embeddings from langchain_core.documents import Document from langchain_openai import ChatOpenAI from langchain_classic.load import dumps, loads load_dotenv() # 配置初始化 OPENAI_API_KEY os.getenv(GLM_API_KEY) OPENAI_BASE_URL os.getenv(GLM_BASE_URL) EMBEDDING_MODEL os.getenv(GLM_EMBEDDING_MODEL, embedding-3) MILVUS_URI os.getenv(MILVUS_URI, http://localhost:19530) COLLECTION_NAME finance_report_rrf # 兼容 LangChain 的嵌入适配器 class OpenAIEmbeddingsAdapter(Embeddings): def __init__(self, client, model): self.client client self.model model def embed_documents(self, texts): response self.client.embeddings.create(inputtexts, modelself.model) return [item.embedding for item in response.data] def embed_query(self, text): return self.embed_documents([text])[0] client OpenAI(api_keyOPENAI_API_KEY, base_urlOPENAI_BASE_URL) embed_model OpenAIEmbeddingsAdapter(client, EMBEDDING_MODEL) # 文档加载 def parse_finance_document(): 构建财务分析示例文档 texts [ 悦享餐饮2020-2023财务综合分析报告短期偿债能力分析。 2020~2023年间悦享餐饮速动比率分别为2.85、2.07、1.48和1.53 流动比率分别为2.12、2.24、1.61和1.68整体呈先降后升趋势。 2022年受非流动资产增加影响流动比率大幅回落 2023年加强应付账款管控流动资产增加短期偿债能力略有改善。, 悦享餐饮2020-2023财务综合分析报告长期偿债能力分析。 资产负债率先升后降21.56%-22.03%-28.15%-26.87% 产权比率同步变动28.0%-39.9%-36.7%。 2022年受外部冲击应付账款大增资产负债率攀升至28.15% 2023年优化资产结构总资产增至188652.47万元负债回落。, 悦享餐饮2020-2023财务综合分析报告营运能力分析。 应收账款周转率从25.12次降至15.34次后回升至18.65次 存货周转率波动较大10.87-8.23-12.35-11.68。, 悦享餐饮2020-2023财务综合分析报告盈利能力分析。 2020~2021年毛利率稳定在60%左右2022年大幅下滑至-10.23%2023年回升至8.65%。 净资产收益率同步下降主要受门店扩张成本和疫情影响。, 悦享餐饮2020-2023财务综合分析报告发展能力分析。 2022年新增5家门店成本3256.87万元加剧资金压力2023年暂停扩张。 营业收入增长率从2021年的15.2%下降至2022年的-8.3%2023年恢复至5.1%。, ] return [Document(page_contentt) for t in texts] def reciprocal_rank_fusion(results: list[list], k60): RRFReciprocal Rank Fusion算法实现 参数 results (list[list]): 多个检索结果列表每个列表包含按相关性排序的文档 k (int): RRF算法的调节参数默认值60经验值 返回 list: 融合后的(文档, 分数)元组列表按分数降序排序 算法原理 score 1 / (rank k)同一文档出现在多个列表中时累加分数 fused_scores {} for docs in results: for rank, doc in enumerate(docs): doc_str dumps(doc) if doc_str not in fused_scores: fused_scores[doc_str] 0 fused_scores[doc_str] 1 / (rank k) reranked_results [ (loads(doc), score) for doc, score in sorted(fused_scores.items(), keylambda x: x[1], reverseTrue) ] return reranked_results # 构建向量索引 print(正在加载文档...) docs parse_finance_document() text_splitter RecursiveCharacterTextSplitter(chunk_size300, chunk_overlap50) splits text_splitter.split_documents(docs) print(f文档已切分为 {len(splits)} 个文本块) print(正在创建 Milvus 向量索引...) vectorstore Milvus( embedding_functionembed_model, collection_nameCOLLECTION_NAME, connection_args{uri: MILVUS_URI}, auto_idTrue, ) vectorstore.add_documents(splits) retriever vectorstore.as_retriever(search_kwargs{k: 3}) print(向量索引创建完成) # 配置多查询生成器 template 你是一个帮助用户生成多个搜索查询的助手。 请根据以下问题生成4个不同角度的相关搜索查询这些查询应该 1. **从不同的角度理解原问题** 2. **使用不同的关键词和表达方式** 3. **覆盖问题的不同方面** 原问题{question} 请生成4个相关的搜索查询 prompt_rag_fusion ChatPromptTemplate.from_template(template) llm ChatOpenAI( modelglm-4, temperature0, api_keyOPENAI_API_KEY, base_urlOPENAI_BASE_URL ) generate_queries ( prompt_rag_fusion | llm | StrOutputParser() | (lambda x: [q.strip() for q in x.split(/n) if q.strip()]) ) # 测试 RRF 重排 questions [ 悦享餐饮的短期偿债能力怎么样, 2022年毛利率为什么下滑, 门店扩张对财务有什么影响, ] for idx, question in enumerate(questions, 1): print(f/n{*50}) print(f问题 {idx}: {question}) print(*50) # 生成多个查询 queries generate_queries.invoke({question: question}) print(f生成了 {len(queries)} 个查询) for i, query in enumerate(queries, 1): print(f 查询 {i}: {query}) # 对每个查询进行检索 all_results [] for query in queries: query_docs retriever.invoke(query) all_results.append(query_docs) # 使用RRF算法融合结果 reranked_docs reciprocal_rank_fusion(all_results) # 展示最终结果 print(f/nRRF重排结果前3个) for i, (doc, score) in enumerate(reranked_docs[:3], 1): content_preview doc.page_content[:200].replace(/n, ).strip() print(f/n 排名 {i} (RRF分数: {score:.4f}):) print(f 内容: {content_preview}...) if doc.metadata: print(f 来源: {doc.metadata.get(source, 未知)})2、RankLLM重排利用大语言模型LLM的深度语言理解能力进行文档重排通过prompt engineering引导LLM对每个文档进行相关性评分。优势语义理解最深、推理能力强、可解释性好劣势成本高LLM API调用、延迟大流程图代码样例importos from dotenvimportload_dotenv from openaiimportOpenAI from langchain_community.vectorstoresimportMilvus from langchain_core.embeddingsimportEmbeddings from langchain_core.documentsimportDocument from langchain_openaiimportChatOpenAI from langchain_core.promptsimportChatPromptTemplate from langchain_core.output_parsersimportStrOutputParser load_dotenv()# 配置初始化 OPENAI_API_KEYos.getenv(GLM_API_KEY)OPENAI_BASE_URLos.getenv(GLM_BASE_URL)EMBEDDING_MODELos.getenv(GLM_EMBEDDING_MODEL,embedding-3)MILVUS_URIos.getenv(MILVUS_URI,http://localhost:19530)COLLECTION_NAMEfinance_report_rankllmclass OpenAIEmbeddingsAdapter(Embeddings): def __init__(self, client, model): self.clientclient self.modelmodel def embed_documents(self, texts): responseself.client.embeddings.create(inputtexts,modelself.model)return[item.embeddingforiteminresponse.data]def embed_query(self, text):returnself.embed_documents([text])[0]clientOpenAI(api_keyOPENAI_API_KEY,base_urlOPENAI_BASE_URL)embed_modelOpenAIEmbeddingsAdapter(client, EMBEDDING_MODEL)# 文档加载 texts[悦享餐饮2020-2023财务综合分析报告短期偿债能力分析。2020~2023年间速动比率分别为2.85、2.07、1.48和1.53流动比率分别为2.12、2.24、1.61和1.68整体呈先降后升趋势。,悦享餐饮2020-2023财务综合分析报告长期偿债能力分析。资产负债率先升后降21.56%-22.03%-28.15%-26.87%2022年受外部冲击应付账款大增资产负债率攀升至28.15%。,悦享餐饮2020-2023财务综合分析报告盈利能力分析。2020~2021年毛利率稳定在60%左右2022年大幅下滑至-10.23%2023年回升至8.65%。净资产收益率同步下降主要受门店扩张成本和疫情影响。,悦享餐饮2020-2023财务综合分析报告发展能力分析。2022年新增5家门店成本3256.87万元加剧资金压力2023年暂停扩张。营业收入增长率从2021年的15.2%下降至2022年的-8.3%2023年恢复至5.1%。,悦享餐饮2020-2023财务综合分析报告营运能力分析。应收账款周转率从25.12次降至15.34次后回升至18.65次存货周转率波动较大10.87-8.23-12.35-11.68。,]docs[Document(page_contentt)fortintexts]# 创建 Milvus 向量检索器 vectorstoreMilvus(embedding_functionembed_model,collection_nameCOLLECTION_NAME,connection_args{uri:MILVUS_URI},auto_idTrue,)vectorstore.add_documents(docs)retrievervectorstore.as_retriever(search_kwargs{k:5})# LLM 重排器 grade_promptChatPromptTemplate.from_messages([(system,你是一个文档相关性评分员。根据用户问题对文档进行评分。\n只输出一个0-10的整数分数10表示高度相关0表示完全无关。),(human,用户问题{question}\n\n文档内容{document}\n\n相关性分数0-10),])llmChatOpenAI(modelglm-4,temperature0,api_keyOPENAI_API_KEY,base_urlOPENAI_BASE_URL)gradergrade_prompt|llm|StrOutputParser()def llm_rerank(query, docs,top_n3): LLM 重排对每个文档调用 LLM 评分按分数降序返回前 top_n 个 参数 query: 用户查询 docs: 候选文档列表 top_n: 返回文档数 返回 list: 按 LLM 评分排序的(文档, 分数)元组列表 scored_docs[]fordocindocs: try: score_strgrader.invoke({question:query,document:doc.page_content})scoreint(score_str.strip())except(ValueError, TypeError): score0scored_docs.append((doc,score))scored_docs.sort(keylambda x: x[1],reverseTrue)returnscored_docs[:top_n]# 执行查询和重排 query2022年毛利率为什么下滑# 第一阶段Milvus 向量检索候选文档candidate_docsretriever.invoke(query)# 第二阶段LLM 重排rerankedllm_rerank(query, candidate_docs,top_n3)print(f查询: {query}\n)print(LLM 重排结果前3个)fori,(doc, score)inenumerate(reranked,1): print(f\n排名 {i} (相关性分数: {score}/10):)print(f 内容: {doc.page_content[:150]}...)ifdoc.metadata: print(f 来源: {doc.metadata.get(source, 未知)})3、CrossEncoder重排CrossEncoder是一种基于BERT的双向编码器重排模型将查询和文档作为一个整体输入利用[CLS]标记的输出预测相关性分数能够捕捉查询与文档之间的深层交互。优势精度高、语义理解强劣势计算开销大每个查询-文档对需单独编码不适合第一阶段检索从海量的文档里快速粗筛选出少量的候选文档流程图代码样例from transformers import AutoTokenizer, AutoModelForSequenceClassification import torch # 1. 加载预训练的CrossEncoder模型 model_name cross-encoder/ms-marco-MiniLM-L-12-v2 tokenizer AutoTokenizer.from_pretrained(model_name) model AutoModelForSequenceClassification.from_pretrained(model_name) def encode_and_score(query, docs): 计算查询与每个文档的相关性分数 输入格式: [CLS] query [SEP] document [SEP] 分数越高表示相关性越强 scores [] for doc in docs: inputs tokenizer( query, doc, return_tensorspt, truncationTrue, max_length512, paddingmax_length ) with torch.no_grad(): outputs model(inputs) score outputs.logits[0][0].item() scores.append(score) return scores # 2. 测试数据财务分析场景 query 悦享餐饮2022年毛利率为什么下滑 documents [ 2020~2021年毛利率稳定在60%左右2022年大幅下滑至-10.23%2023年回升至8.65%。 净资产收益率同步下降主要受门店扩张成本和疫情影响。, 2022年新增5家门店成本3256.87万元加剧资金压力2023年暂停扩张。 营业收入增长率从2021年的15.2%下降至2022年的-8.3%。, 2020~2023年间速动比率分别为2.85、2.07、1.48和1.53 流动比率分别为2.12、2.24、1.61和1.68整体呈先降后升趋势。, 资产负债率先升后降21.56%-22.03%-28.15%-26.87% 2022年受外部冲击应付账款大增资产负债率攀升至28.15%。, ] # 3. 执行CrossEncoder重排 scores encode_and_score(query, documents) ranked_docs sorted(zip(documents, scores), keylambda x: x[1], reverseTrue) # 4. 输出重排结果 print(f查询: {query}/n) print(CrossEncoder重排结果按相关性分数降序) for rank, (doc, score) in enumerate(ranked_docs, start1): if score 0: level 高度相关 elif score -2: level 中等相关 else: level 低相关 print(f/n 排名 {rank} (分数: {score:.4f}, {level}):) print(f {doc[:100]}...)总结重排算法核心原理核心优势主要劣势典型使用场景RRF多维度查询检索通过公式1/(rankk)融合排名得分实现简单、速度快、无算力成本无深层语义理解精度偏低依赖查询质量多路召回合并、高并发快速检索RankLLM借助大模型 提示词逐文档人工规则化打分排序语义理解极强、具备逻辑推理、结果可解释调用成本高、接口延迟大专业问答、复杂推理、需要结果解释CrossEncoder拼接问句与文档整体编码依靠 BERT 双向交互计算相关分语义匹配精准、相关性判别能力强逐对编码耗时高、算力开销大搜索业务精排、RAG 少量候选文档排序总的来说通过重排序提升检索结果排序精度将原始的初始检索结果打磨为高质量的生成上下文。最后2026年技术圈的分化愈发明显降薪裁员潮持续蔓延传统开发、测试等岗位大批缩水不少从业者陷入职业焦虑与之形成鲜明对比的是AI大模型相关岗位迎来疯狂扩招薪资逆势飙升150%大厂更是直接开出70-100W年薪疯抢具备实战能力的大模型人才甚至放宽年龄限制只求能快速落地技术、创造价值很多程序员、职场新人纷纷入局大模型领域绝非盲目跟风而是实实在在看到了不可替代的价值优势这也是2026年最值得抓住的职业风口1、窗口期红利入门门槛友好不同于成熟赛道的“内卷式招聘”2026年大模型人才缺口巨大简历只要达标掌握基础AI应用具备简单项目经验年龄、学历均非硬性要求小白可快速入门转行程序员也能无缝衔接2、技术可复用上手速度翻倍如果你有前后端开发、测试、数据分析等基础在大模型落地、系统部署、Prompt工程等环节会更具优势无需从零开始复用原有技术能力就能快速进阶3、懂业务更吃香竞争力翻倍单纯懂技术已不够2026年大厂更看重“技术业务”的复合型人才有垂直领域金融、医疗、工业等经验者能精准定位模型落地痛点薪资比纯技术岗高出30%以上更重要的是即便没有转型需求用AI大模型工具为工作赋能、提升效率也已经成为80%企业的硬性要求——不会用大模型提效未来很可能被行业淘汰那么2026年小白/程序员该如何高效学习大模型很多人想入门大模型却陷入两大困境要么到处搜集零散资料不成体系越学越懵要么被收费高昂的课程割韭菜花了钱却学不到实战技能白白浪费时间走弯路。今天就给大家精心整理了一份2026年最新、免费、系统化的AI大模型学习资源包覆盖从零基础入门到商业实战、从理论沉淀到面试通关的全流程所有资料均已整理归档无需拼凑直接领取就能上手学习小白可照做程序员可进阶扫码免费领取全部内容1、大模型系统化学习路线这份学习路线结合2026年行业趋势和新手学习规律由行业专家精心设计从零基础到精通每一步都有明确指引帮你节省80%的无效学习时间少走弯路、高效进阶避免踩坑。2、从0到进阶大模型学习视频教程从入门到进阶这里都有跟着老师学习事半功倍。3、大模型学习书籍电子文档涵盖2026年最新技术要点包括基础入门、Transformer核心原理、Prompt工程、RAG实战、模型微调与部署等内容4、AI大模型最新行业报告报告包含腾讯、阿里、甲子光年等权威机构发布的核心内容还有2026年中文大模型基准测评报告、AI Agent行业研究报告等帮你站在行业前沿把握技术风口。5、大模型项目实战配套源码项目包含Deepseek R1、GPT项目、MCP项目、RAG实战等热门方向还有视频配套代码手把手教你从0到1完成项目开发既能练手提升技术又能丰富简历为求职和职业发展加分。6、2026大模型大厂面试真题2026年大模型面试已全面升级不再单纯考察基础原理而是转向侧重技术落地和业务结合的综合考察很多程序员和新手因为缺乏针对性准备明明技术不错却在面试中失利。适用人群四阶段学习规划共90天可落地执行第一阶段10天初阶应用该阶段让大家对大模型 AI有一个最前沿的认识对大模型 AI 的理解超过 95% 的人可以在相关讨论时发表高级、不跟风、又接地气的见解别人只会和 AI 聊天而你能调教 AI并能用代码将大模型和业务衔接。大模型 AI 能干什么大模型是怎样获得「智能」的用好 AI 的核心心法大模型应用业务架构大模型应用技术架构代码示例向 GPT-3.5 灌入新知识提示工程的意义和核心思想Prompt 典型构成指令调优方法论思维链和思维树Prompt 攻击和防范…第二阶段30天高阶应用该阶段我们正式进入大模型 AI 进阶实战学习学会构造私有知识库扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架抓住最新的技术进展适合 Python 和 JavaScript 程序员。为什么要做 RAG搭建一个简单的 ChatPDF检索的基础概念什么是向量表示Embeddings向量数据库与向量检索基于向量检索的 RAG搭建 RAG 系统的扩展知识混合检索与 RAG-Fusion 简介向量模型本地部署…第三阶段30天模型训练恭喜你如果学到这里你基本可以找到一份大模型 AI相关的工作自己也能训练 GPT 了通过微调训练自己的垂直大模型能独立训练开源多模态大模型掌握更多技术方案。到此为止大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗为什么要做 RAG什么是模型什么是模型训练求解器 损失函数简介小实验2手写一个简单的神经网络并训练它什么是训练/预训练/微调/轻量化微调Transformer结构简介轻量化微调实验数据集的构建…第四阶段20天商业闭环对全球大模型从性能、吞吐量、成本等方面有一定的认知可以在云端和本地等多种环境下部署大模型找到适合自己的项目/创业方向做一名被 AI 武装的产品经理。硬件选型带你了解全球大模型使用国产大模型服务搭建 OpenAI 代理热身基于阿里云 PAI 部署 Stable Diffusion在本地计算机运行大模型大模型的私有化部署基于 vLLM 部署大模型案例如何优雅地在阿里云私有部署开源大模型部署一套开源 LLM 项目内容安全互联网信息服务算法备案…扫码免费领取全部内容7、这些资料真的有用吗这份资料由我和鲁为民博士(北京清华大学学士和美国加州理工学院博士)共同整理现任上海殷泊信息科技CEO其创立的MoPaaS云平台获Forrester全球’强劲表现者’认证服务航天科工、国家电网等1000企业以第一作者在IEEE Transactions发表论文50篇获NASA JPL火星探测系统强化学习专利等35项中美专利。本套AI大模型课程由清华大学-加州理工双料博士、吴文俊人工智能奖得主鲁为民教授领衔研发。资料内容涵盖了从入门到进阶的各类视频教程和实战项目无论你是小白还是有些技术基础的技术人员这份资料都绝对能帮助你提升薪资待遇转行大模型岗位。这份完整版的大模型 AI 学习资料已经上传CSDN朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】