【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 重排,实现"召回+精排"协同,既保证了检索效率,又提升了排序精准度,为用户提供更相关且可解释的推荐结果。
相关推荐
众链网络1 分钟前
你的Prompt还有很大提升
人工智能·prompt·ai写作·ai工具·ai智能体
汀沿河3 分钟前
2 大模型高效参数微调;prompt tunning
人工智能·深度学习·prompt
路溪非溪10 分钟前
机器学习之线性回归
人工智能·机器学习·线性回归
Chef_Chen11 分钟前
从0开始学习计算机视觉--Day07--神经网络
神经网络·学习·计算机视觉
掘金-我是哪吒25 分钟前
分布式微服务系统架构第156集:JavaPlus技术文档平台日更-Java线程池使用指南
java·分布式·微服务·云原生·架构
国服第二切图仔29 分钟前
文心开源大模型ERNIE-4.5-0.3B-Paddle私有化部署保姆级教程及技术架构探索
百度·架构·开源·文心大模型·paddle·gitcode
搞笑的秀儿1 小时前
信息新技术
大数据·人工智能·物联网·云计算·区块链
SelectDB1 小时前
SelectDB 在 AWS Graviton ARM 架构下相比 x86 实现 36% 性价比提升
大数据·架构·aws
阿里云大数据AI技术2 小时前
OpenSearch 视频 RAG 实践
数据库·人工智能·llm
XMAIPC_Robot2 小时前
基于ARM+FPGA的光栅尺精密位移加速度测试解决方案
arm开发·人工智能·fpga开发·自动化·边缘计算