从0搭建Agentic RAG智能推荐系统(无需向量化)|Python实战分享

本文较长,建议点赞收藏。更多AI大模型应用开发学习视频及资料,在智泊AI

传统RAG(检索增强生成)依赖向量化检索,流程复杂且资源消耗大。而Agentic RAG提供了一种更轻量的替代方案------无需向量化,仅需结构化内存数据库即可实现高效检索+生成。

<图片源于:LLM大模型>

Agentic RAG 在传统RAG流程的基础上加入了一个重要角色------Agent(智能体) 。它不仅能检索,还能根据任务动态选择工具、拆解问题、调用外部API,甚至多轮迭代优化结果。这意味着它可以:

  • 不依赖大型向量数据库
  • 根据不同任务,走不同的推理路线
  • 对数据源和API灵活切换

本期给大家分享的是由和鲸社区创作者 @StarTap 分享的Agentic RAG 全面教程:从理论到实战项目中的餐厅智能推荐系统,就是一个典型例子。

项目指路:www.heywhale.com/u/745b40

🌟推荐理由:

项目中不仅清晰说明了Agentic RAG的理论基础(包含技术架构、工作原理以及与传统RAG的区别),还用极简的实现方式,构建了一个基于Agentic RAG思路的餐厅推荐系统,而且完全无需向量化,检索逻辑清晰、执行效率高,十分适合中小规模数据的业务场景。对于需要快速验证想法、构建轻量级智能推荐功能的团队来说,这将是一个很好的参考案例。

系统设计思路

整个系统的核心逻辑非常直接:

  • 用户用自然语言描述需求(人数、人均价格、菜系)
  • 系统从内存数据库中筛选符合条件的餐厅
  • 用大模型包装检索结果,生成友好、准确的中文回复

关键在于:数据检索是纯Python条件过滤,不需要向量化

知识源准备

项目中用了一个简化的餐厅数据集,每条数据包含:

  • 餐厅名称、分店名称、地址
  • 联系电话
  • 人均消费
  • 菜系类型编码
  • 适合人数

数据示例(Python表示):

ini 复制代码
restaurants = [
{"shopType": 10,"shopName": "居民楼火锅","branchName": "万松园店","address": "万松小区","phoneNo": "17771857933","phoneNo2": "18871569657","avgPrice": 50,"suitableFor": 3
},
{"shopType": 10,"shopName": "重庆老火锅","branchName": "江汉路店","address": "江汉路步行街","phoneNo": "13800138000","avgPrice": 60,"suitableFor": 4
}
]

核心实现

1、检索函数

它的工作很直接:按菜系、人数、人均价格范围过滤餐厅。价格范围放宽到 ±20%,增加匹配灵活性。

python 复制代码
def query_restaurants(numOfPeople: int, avgOfAmount: int, cuisine_type: str) -> list:
results = []
type_code = CUISINE_TYPE_MAP.get(cuisine_type, None)if type_code is None:return []for restaurant in restaurants:if restaurant['shopType'] != type_code:continue
if restaurant['suitableFor'] < numOfPeople:continue
if not (0.8 * avgOfAmount <= restaurant['avgPrice'] <= 1.2 * avgOfAmount):continue
results.append(restaurant)return results

2、参数抽取

通过正则匹配从用户输入中抽取关键信息,比如"3个人""人均50""重庆火锅"等。

python 复制代码
def extract_query_params(user_input: str):import re
num_match = re.search(r'(\d+)\s*人', user_input)
numOfPeople = int(num_match.group(1)) if num_match else 2
avg_match = re.search(r'人均(\d+)', user_input)
avgOfAmount = int(avg_match.group(1)) if avg_match else 50
cuisine_type = None
for k in CUISINE_TYPE_MAP.keys():if k in user_input:
cuisine_type = kbreak
if not cuisine_type:
cuisine_type = list(CUISINE_TYPE_MAP.keys())[0]return numOfPeople, avgOfAmount, cuisine_type

3、大模型API调用

这里的亮点是流式输出,让推荐结果像聊天一样即时出现。

ini 复制代码
from openai import OpenAI
from dotenv import load_dotenv
import os
def run_agentic_rag():
load_dotenv()print("欢迎使用 Agentic RAG 餐厅推荐系统(无需向量化)!\n")while True:
user_input = input("请输入您的需求:")if user_input.strip().lower() == 'q':break
numOfPeople, avgOfAmount, cuisine_type = extract_query_params(user_input)
results = query_restaurants(numOfPeople, avgOfAmount, cuisine_type)if results:
r = results[0]
answer = f"按您的要求,我找到了{r['shopName']}({r['branchName']}),位于{r['address']},电话是{r['phoneNo']},是一家{cuisine_type},人均消费{r['avgPrice']}元,适合{r['suitableFor']}个人用餐。"else:
answer = "没有找到符合条件的餐厅。"
system_prompt = "你是餐饮推荐专家,请根据用户需求和检索到的结果,生成简洁、友好、准确的中文回复。"
messages = [
{"role": "system", "content": system_prompt},
{"role": "user", "content": f"用户需求:{user_input}\n检索结果:{answer}"}
]
client = OpenAI(
api_key="api_key",
base_url="https://aistudio.baidu.com/llm/lmapi/v3",
)
completion = client.chat.completions.create(
model="deepseek-r1",
messages=messages,
stream=True,
)for chunk in completion:if len(chunk.choices) > 0:if hasattr(chunk.choices[0].delta, 'reasoning_content') and chunk.choices[0].delta.reasoning_content:print(chunk.choices[0].delta.reasoning_content, end="", flush=True)else:print(chunk.choices[0].delta.content, end="", flush=True)print()

⚠️由于openai版本原因,在fork项目时,需手动升级安装最新版openai

通过这个轻量级的餐厅推荐系统案例,我们可以看到Agentic RAG的核心价值

  1. 技术降本:用结构化数据+条件检索替代向量化,节省算力与存储开销,尤其适合中小规模场景。
  2. 灵活扩展:通过修改数据源或检索逻辑,可快速适配酒店推荐、活动匹配等同类需求。
  3. 敏捷验证:无需复杂基础设施,一个Python脚本即可验证智能推荐的核心流程。

学习资源推荐

如果你想更深入地学习大模型,以下是一些非常有价值的学习资源,这些资源将帮助你从不同角度学习大模型,提升你的实践能力。

本文较长,建议点赞收藏。更多AI大模型应用开发学习视频及资料,在智泊AI

相关推荐
AI大模型4 小时前
全流程实操教程:2小时构建RAG文档智能问答系统|基于Dify
程序员·llm·agent
AI大模型4 小时前
中科院工程师分享:用Unsloth打造推理增强大模型|低显存、高推理、可复用
程序员·llm·agent
申阳4 小时前
Day 12:09. 基于Nuxt开发博客项目-使用NuxtContent构建博客模块
前端·后端·程序员
Cleaner5 小时前
我是如何高效学习大模型的
人工智能·程序员·llm
小霖家的混江龙8 小时前
AI 为啥能回答你的问题?大模型 5 步工作流程,看完秒懂!
人工智能·llm
DyLatte18 小时前
用工具超越思考本身
程序员
DO_Community20 小时前
基于AI Agent模板:快速生成 SQL 测试数据
人工智能·python·sql·ai·llm·ai编程
智泊AI20 小时前
这是一篇写给AI大模型入门的新手小白手册(附文档)
llm
山顶夕景21 小时前
【RL-LLM】Self-Rewarding Language Models
llm·强化学习·rl·dpo