【AI大模型学习路线】第二阶段之RAG基础与架构——第十一章(【项目实战】基于RAG的新闻推荐)推荐中的召回与精排 ?

【AI大模型学习路线】第二阶段之RAG基础与架构------第十一章(【项目实战】基于RAG的新闻推荐)推荐中的召回与精排 ?

【AI大模型学习路线】第二阶段之RAG基础与架构------第十一章(【项目实战】基于RAG的新闻推荐)推荐中的召回与精排 ?


文章目录

  • [【AI大模型学习路线】第二阶段之RAG基础与架构------第十一章(【项目实战】基于RAG的新闻推荐)推荐中的召回与精排 ?](#【AI大模型学习路线】第二阶段之RAG基础与架构——第十一章(【项目实战】基于RAG的新闻推荐)推荐中的召回与精排 ?)
  • 前言
    • 一、召回(Retrieval)阶段
      • [1.1 向量检索](#1.1 向量检索)
      • [1.2 混合检索策略](#1.2 混合检索策略)
      • [1.3 多阶段召回](#1.3 多阶段召回)
    • 二、精排(Re-ranking)阶段
      • [2.1 Cross-Encoder 精排](#2.1 Cross-Encoder 精排)
      • [2.2 LLM 驱动重排](#2.2 LLM 驱动重排)
      • [2.3 多信号融合与在线学习](#2.3 多信号融合与在线学习)
    • [三、Python 核心示例](#三、Python 核心示例)

欢迎宝子们点赞、关注、收藏!欢迎宝子们批评指正!
祝所有的硕博生都能遇到好的导师!好的审稿人!好的同门!顺利毕业!

大多数高校硕博生毕业要求需要参加学术会议,发表EI或者SCI检索的学术论文会议论文。详细信息可关注VX "学术会议小灵通"或参考学术信息专栏:https://fighting.blog.csdn.net/article/details/147526990


前言

  • 基于 RAG 的新闻推荐系统通过"召回(Retrieval)"与"精排(Re-ranking)"两步实现高效且精准的内容推荐,先利用向量检索及混合检索策略从海量新闻中快速召回候选,再借助 Cross-Encoder 或大模型生成评分、融合多信号,对候选进行细粒度排序,从而显著提升推荐相关性与可解释性。

一、召回(Retrieval)阶段

1.1 向量检索

  • 系统首先将用户画像或查询文本编码为高维向量,然后在向量数据库(如 FAISS)中执行近邻搜索,快速返回 Top-K 最相关的新闻片段。

1.2 混合检索策略

  • 为了同时兼顾语义匹配与时效性,通常采用向量检索与关键词检索(如 BM25 或 ElasticSearch)并行,然后对结果集进行并集或交集操作,以满足主题过滤和时间窗口约束

1.3 多阶段召回

  • 在大规模新闻库中常用双编码器(Bi-encoder)模型进行第一阶段粗排,缩小候选集规模,再进入精排环节,以兼顾检索效率与召回率。

二、精排(Re-ranking)阶段

2.1 Cross-Encoder 精排

  • Cross-Encoder 将查询与候选文档拼接后输入同一 Transformer,深度建模二者间的注意力交互,并输出更精确的匹配分数,在 Top-K(< 20) 文档上效果显著优于双编码器。

2.2 LLM 驱动重排

  • 利用 GPT-4、LLaMA 等大模型对候选文档进行打分或生成排序理由,并根据生成置信度重排列表,兼顾多样性与可解释性,适用于需要自然语言解释的新闻推荐场景。

2.3 多信号融合与在线学习

  • 精排时可将初始检索分、Cross-Encoder 分数、LLM 生成置信度,以及业务特征(如 CTR 预估、源站点权威度)加权融合,并结合用户点击等在线反馈,动态调整权重,实现闭环优化

三、Python 核心示例

csharp 复制代码
from langchain.embeddings import SentenceTransformerEmbedding
from langchain.vectorstores import FAISS
from langchain.llms import OpenAI
from langchain.chains import LLMChain
from langchain.prompts import PromptTemplate

# 1. 初始化检索(召回)
embedder = SentenceTransformerEmbedding(model_name="all-MiniLM-L6-v2")
news_docs = ["地震快讯 A ...", "空气质量报告 B ...", "..."]
vectors = embedder.embed_documents(news_docs)
faiss_index = FAISS.from_embeddings(vectors, news_docs)

# 2. 粗排召回 Top-K
query = "关注近三日地震与AOD异常新闻"
retriever = faiss_index.as_retriever(search_kwargs={"k": 10})
candidates = retriever.get_relevant_documents(query)

# 3. 精排重排(LLM 驱动)
llm = OpenAI(model="gpt-4", temperature=0.0)
template = PromptTemplate(
    input_variables=["query", "doc"],
    template=(
        "请基于用户意图"{query}",为以下新闻片段"{doc}"打分(1-10),并简要说明评分原因:"
    )
)
chain = LLMChain(llm=llm, prompt=template)

scored = []
for doc in candidates:
    output = chain.run({"query": query, "doc": doc.page_content})
    score = float(output.split("\n")[0].strip())  # 假设第一行为分数
    scored.append((doc.page_content, score))

# 4. 融合排序与输出
final = sorted(scored, key=lambda x: x[1], reverse=True)[:5]
for idx, (doc, score) in enumerate(final, 1):
    print(f"{idx}. (Score: {score}) {doc[:100]}...")
  • 以上流程展示了如何在 RAG 新闻推荐中,通过 FAISS 向量召回结合 LLM 重排,实现"召回+精排"协同,既保证了检索效率,又提升了排序精准度,为用户提供更相关且可解释的推荐结果。
相关推荐
武汉唯众智创6 小时前
基于大语言模型的心理咨询数字人:从0到1构建一个能“共情“的AI心理陪伴助手
人工智能·数字人·ai心理健康·校园心理健康解决方案·ai无感监测·具身智能计算技术·智能体通信技术
minhuan6 小时前
大模型上下文工程核心策略解析:窗口管理、消息编排、记忆压缩与检索增强应用实践21.8
人工智能·大模型应用·大模型上下文工程·上下文窗口管理·上下文消息编排·上下文记忆压缩
woshihuanglaoshi6 小时前
参数验证_Flutter在鸿蒙平台确保路由参数类型安全
学习·flutter·华为·harmonyos·鸿蒙·鸿蒙系统
love530love6 小时前
【排障实录】GPT Desktop (Codex) 开启 WSL 智能体模式后无法启动?手把手教你修复
人工智能·windows·gpt·agent
何时梦醒6 小时前
# ⚛️ React 19 + TypeScript 深度学习笔记 —— 从组件化思维到 WebGPU 端侧 AI 落地(续)
人工智能·react.js
小刘学技术6 小时前
AI人工智能中的类别不平衡问题:成因、影响与解决方案
开发语言·人工智能·python·机器学习
阿拉雷️6 小时前
部署实战】Docker + AI Agent:让AI一键部署Spring Boot到服务器,从打包到上线只要一条指令
人工智能·spring boot·docker
饼干哥哥6 小时前
我用千问3.8跑通了Reddit自动海外获客部门,成本砍 10 倍!
人工智能·开源·创业
武子康6 小时前
Claude Code 权限分析器为什么必须 Fail Closed:v2.1.214 暴露的 5 类边界 + 6 类不能推出的结论
人工智能·ai编程·claude