跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
PythonAI算法

RAG 结合内容推荐的实践方案与代码示例

综述由AI生成RAG 技术结合内容推荐通过检索增强生成模型,解决传统推荐系统冷启动及可解释性问题。 RAG 的核心架构,包括索引构建、检索器和生成器模块。提供了基于 Python 的完整代码示例,涵盖文档向量化、FAISS 索引构建及 LLM 生成推荐语的实现。此外,还讨论了重排序、提示词优化等改进策略,以及面临的延迟和上下文窗口挑战,为构建智能推荐系统提供实践指导。

DockerOne发布于 2025/2/7更新于 2026/6/320 浏览
RAG 结合内容推荐的实践方案与代码示例

RAG 结合内容推荐的实践方案与代码示例

1. 背景与概述

检索增强生成(Retrieval-Augmented Generation, RAG)是一种将信息检索系统与大型语言模型(LLM)相结合的技术架构。在内容推荐场景中,RAG 能够利用外部知识库解决传统推荐系统冷启动问题,并提高推荐内容的可解释性和准确性。

传统的协同过滤或基于内容的推荐往往依赖历史行为数据,难以处理实时变化的知识或提供详细的推荐理由。RAG 通过检索相关文档片段,将其作为上下文输入给生成模型,从而生成个性化且基于事实的推荐结果。

2. 系统架构设计

一个典型的 RAG 推荐系统包含三个核心模块:索引构建器、检索器和生成器。

2.1 索引构建器

负责将非结构化数据(如文章、商品描述、用户评论)转化为向量表示。

  • 分块策略:根据语义完整性对长文本进行切分。
  • 向量化:使用 Embedding 模型将文本转换为高维向量。
  • 存储:存入向量数据库(如 FAISS, Milvus, Pinecone)。

2.2 检索器

根据用户查询或画像,从向量库中召回最相关的文档。

  • 相似度计算:通常使用余弦相似度。
  • 混合检索:结合关键词检索(BM25)和向量检索,提升召回率。

2.3 生成器

利用 LLM 根据检索到的文档和用户指令生成最终推荐内容。

  • Prompt 工程:设计清晰的指令模板,限制模型幻觉。
  • 解码策略:调整 Temperature 和 Top-P 参数以平衡创造性和稳定性。

3. 技术实现细节

以下是一个基于 Python 的简化实现流程,展示如何使用 sentence-transformers 进行嵌入,faiss 进行检索,以及 transformers 进行生成。

3.1 环境准备

pip install transformers faiss-cpu sentence-transformers scikit-learn torch

3.2 数据准备与向量化

我们需要构建一个文档库,并为每个文档生成向量。

from sentence_transformers import SentenceTransformer
import numpy as np

# 加载预训练嵌入模型
embedding_model = SentenceTransformer('all-MiniLM-L6-v2')

documents = [
    "深度学习是人工智能的一个子集,专注于神经网络。",
    "推荐系统是信息过滤系统的子类,旨在预测用户对项目的评分。",
    "自然语言处理是语言学、计算机科学和人工智能的交叉领域。"
]

# 生成文档向量
doc_embeddings = embedding_model.encode(documents, convert_to_numpy=True)

3.3 构建索引与检索

使用 FAISS 构建索引以加速相似性搜索。

import faiss

dimension = doc_embeddings.shape[1]
index = faiss.IndexFlatL2(dimension)
index.add(doc_embeddings.astype('float32'))

def retrieve(query_text, top_k=2):
    query_embedding = embedding_model.encode([query_text], convert_to_numpy=True)
    distances, indices = index.search(query_embedding.astype('float32'), top_k)
    return [documents[i] for i in indices[0]]

3.4 生成推荐内容

结合检索结果和 LLM 生成自然语言推荐。

from transformers import AutoTokenizer, AutoModelForCausalLM

model_name = "gpt2" # 示例使用 GPT2,生产环境建议使用更强大的模型
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(model_name)

def generate_recommendation(user_query, retrieved_docs):
    context = "\n".join(retrieved_docs)
    prompt = f"""基于以下信息,为用户生成一条推荐语:
用户兴趣:{user_query}
参考信息:
{context}
推荐语:"""
    
    inputs = tokenizer(prompt, return_tensors="pt")
    outputs = model.generate(**inputs, max_length=200, num_return_sequences=1)
    return tokenizer.decode(outputs[0], skip_special_tokens=True)

4. 优化策略

在实际生产中,简单的 RAG 可能面临检索不准或生成幻觉的问题,需采取以下优化措施:

  1. 重排序(Re-ranking):在初步检索后,使用 Cross-Encoder 模型对候选文档进行精细打分,选取最相关的片段。
  2. 提示词优化:明确指示模型'仅基于提供的信息回答',减少幻觉。
  3. 多路召回:结合标签匹配、向量检索和关键词匹配,确保覆盖不同维度的相关性。
  4. 缓存机制:对高频查询的检索结果进行缓存,降低延迟。

5. 挑战与展望

尽管 RAG 在推荐系统中表现优异,但仍存在挑战:

  • 延迟问题:检索 + 生成的链路较长,需优化推理速度。
  • 上下文窗口限制:检索到的文档过多时,超出模型输入限制,需采用摘要或切片策略。
  • 动态更新:知识库实时更新时,向量索引的增量维护成本较高。

未来,随着多模态大模型的发展,RAG 将能更好地处理图像、视频等多模态推荐内容,进一步提升用户体验。

6. 总结

本文探讨了 RAG 技术在内容推荐中的实践路径。通过构建检索 - 生成闭环,系统能够提供更具解释性和准确性的推荐服务。开发者应根据实际业务场景选择合适的 Embedding 模型和向量数据库,并持续优化检索与生成环节,以实现最佳效果。

目录

  1. RAG 结合内容推荐的实践方案与代码示例
  2. 1. 背景与概述
  3. 2. 系统架构设计
  4. 2.1 索引构建器
  5. 2.2 检索器
  6. 2.3 生成器
  7. 3. 技术实现细节
  8. 3.1 环境准备
  9. 3.2 数据准备与向量化
  10. 加载预训练嵌入模型
  11. 生成文档向量
  12. 3.3 构建索引与检索
  13. 3.4 生成推荐内容
  14. 4. 优化策略
  15. 5. 挑战与展望
  16. 6. 总结
  • 💰 8折买阿里云服务器限时8折了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 🤖 一键搭建Deepseek满血版了解详情
  • 一键打造专属AI 智能体了解详情
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • Spring Bean 作用域、生命周期与自动装配源码解析
  • 偏好对齐技术:通用模型蒸馏、领域模型蒸馏与自我提升
  • STM32 上运行 AI 大模型的四种方案及案例
  • 使用 MCP-Server 插件将 Dify 工作流发布为第三方服务
  • 移动端部署 Stable Diffusion 开源方案与使用指南
  • HarmonyOS 应用升级:静默登录与端云一体实战
  • 基于 SpringBoot2+Vue3 的大学生科创项目在线管理系统
  • MaxKB4j 开源智能体搭建平台技术详解
  • Meta Llama 系列深度解析:开源大模型事实标准与架构演进
  • Stable Diffusion 报错修复:CheckpointLoaderSimple 模型加载失败处理
  • 数据结构:选择排序与堆排序原理及实现
  • JavaSE 核心知识点整理
  • OpenClaw v2026.3.1 版本更新与核心功能解析
  • CentOS 系统安装 Docker 完整指南
  • 前缀和算法实战:连续数组与矩阵区域和
  • 10 款主流 AI 降重工具深度测评与免费方案
  • 解决 GitHub Copilot 与 OpenAI Codex 修改代码时的中文乱码问题
  • Spring Bean 作用域、生命周期与自动装配源码解析
  • Win11 本地部署 OpenClaw:集成 Telegram 机器人与网页搜索功能
  • 前端日志本地持久化方案

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • RSA密钥对生成器

    生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online

  • Mermaid 预览与可视化编辑

    基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online

  • 随机西班牙地址生成器

    随机生成西班牙地址(支持马德里、加泰罗尼亚、安达卢西亚、瓦伦西亚筛选),支持数量快捷选择、显示全部与下载。 在线工具,随机西班牙地址生成器在线工具,online

  • Gemini 图片去水印

    基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online

  • curl 转代码

    解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online