从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。

相关推荐
也非非也6 小时前
DeepSeek没发公告,但它把Agent装进了你的电脑
人工智能·开源·agent·deepseek·dsh
weixin_666593996 小时前
从一句话建表看时空智能体的元数据治理架构——Harness、MCP、Skill如何协同
人工智能·agent·结构化数据·建库
爱上纯净的蓝天6 小时前
只输出选项和概率的模型:判别层的接口契约与阈值工程
人工智能·大模型·llm·模型评估·架构设计
DeepAgent7 小时前
AI Agent 工程实践(49):一次真实优化——从 Agent v1 到 v2
开发语言·人工智能·agent
素男8 小时前
对上的,和没对上的——两篇之间那条链
人工智能·agent·self-becoming·ai长期记忆·ai自我介绍
流浪0018 小时前
大模型技术全景(十二):人工介入 HITL、HOTL 与 HOOTL
llm·hitl·人工介入·hotl·hootl
七夜zippoe9 小时前
多模态 Agent 入门:让 Agent 看懂图片、听懂语音、生成内容
ai·agent·多模态·看懂·听懂·生成内容
L@ncor9 小时前
第五章 基于低代码平台的智能体搭建 · 学习笔记(Coze / Dify / FastGPT / n8n)
笔记·学习·低代码·agent·prompt工程
阿里嘎多学长9 小时前
2026-09-28 GitHub 热点项目精选
开发语言·程序员·github·代码托管
SFLYQ10 小时前
dsh 插件 dsh-waker:唤醒专属你的 AI 员工
agent·deepseek