向量数据库实战-利用PostgreSQL+pgvector构建AI 智能应用:AI-Agent集成-智能对话系统
第四章:AI Agent集成 - 从FAQ到智能对话本章目标: 构建基于RAG架构的智能客服Agent学习时间: 90分钟难度等级: ⭐⭐⭐⭐ 高级本章导读上一章我们实现了FAQ搜索,但用户真正想要的是"聊天式"的智能回答,而不是冷冰冰的FAQ列表。这一章,我们把pgvector和大语言模型结合,构建真正的AI Agent!你将学到:✅ 什么是RAG(检索增强生成)架构✅ 如何把向量搜索和GPT结合✅ 构建智能客服Agent(完整代码)✅ 文档问答系统(支持PDF上传)✅ Prompt工程最佳实践4.1 什么是RAG?(检索增强生成)传统AI的痛点直接用ChatGPT有三个严重问题:知识过时: 只知道训练数据,不了解你的业务幻觉问题: 会胡编乱造不存在的信息无法引用: 不知道答案来源,无法验证举例:用户: 你们的收费标准是什么? ChatGPT: (幻觉)我们提供免费版和专业版,专业版每月$19.99... ❌ 完全是编的!RAG解决方案RAG = Retrieval-Augmented Generation工作流程:Retrieval(检索): 从向量库找相关知识Augmented(增强): 把知识喂给AIGeneration(生成): AI基于知识回答同样的问题,用RAG:1. 从向量库检索到: "按月订阅制,基础版99元/月,专业版599元/月..." 2. 构建Prompt: "基于以下知识回答: [检索的FAQ] 用户问题: 你们的收费标准?" 3. GPT生成: "我们提供两种套餐:基础版99元/月,专业版599元/月..." ✅ 准确且有依据!RAG架构图用户提问向量化查询pgvector检索TOP-K文档构建Prompt知识+问题LLM生成回答返回答案+引用4.2 案例1:智能客服Agent项目结构code/04_customer_service_agent/ ├── agent.py # 智能客服主程序(完整代码) ├── requirements.txt # 依赖 ├── .env.example # 环境配置模板 └── README.md # 使用说明完整代码实现requirements.txt:psycopg2-binary==2.9.9 openai==1.12.0 python-dotenv==1.0.1agent.py(完整代码,280行):""" 智能客服Agent 功能: 基于RAG架构的智能问答系统 架构: pgvector检索 + GPT生成 """importpsycopg2fromopenaiimportOpenAIimportosfromdotenvimportload_dotenvfromtypingimportList,Dict,Optionalimportjson# 加载环境变量load_dotenv()# 数据库配置DB_CONFIG={'host':os.getenv('DB_HOST','localhost'),'port':os.getenv('DB_PORT','5432'),'database':os.getenv('DB_NAME','vectordb'),'user':os.getenv('DB_USER','postgres'),'password':os.getenv('DB_PASSWORD','mysecret123')}classCustomerServiceAgent:"""智能客服Agent类"""def__init__(self,api_key:Optional[str]=None):""" 初始化Agent Args: api_key: OpenAI API Key(可选,默认从环境变量读取) """# 初始化OpenAI客户端self.llm_client=OpenAI(api_key=api_keyoros.getenv('OPENAI_API_KEY'))# 数据库连接self.db_conn=Noneself.connect_database()print("✅ 智能客服Agent初始化成功!")defconnect_database(self):"""连接数据库"""try:self.db_conn=psycopg2.connect(**DB_CONFIG)print("✓ 数据库连接成功")exceptExceptionase:print(f"❌ 数据库连接失败:{e}")raisedef_get_embedding(self,text:str)-List[float]:""" 获取文本向量 Args: text: 要向量化的文本 Returns: 1536维向量 """response=self.llm_client.embeddings.create(model="text-embedding-3-small",input=text)returnresponse.data[0].embeddingdefretrieve_knowledge(self,query:str,top_k:int=3,category_filter:Optional[str]=None)-List[Dict]:""" 从知识库检索相关FAQ Args: query: 用户查询 top_k: 返回结果数量 category_filter: 分类过滤(可选) Returns: 相关FAQ列表 """cur=self.db_conn.cursor()try:# 1. 向量化查询query_embedding=self._get_embedding(query)# 2. 构建SQLifcategory_filter:sql=""" SELECT id, category, question, answer, embedding = %s::vector AS distance FROM faq_knowledge WHERE category = %s ORDER BY distance LIMIT %s """params=(query_embedding,category_filter,top_k)else:sql=""" SELECT id, category, question, answer, embedding = %s::vector AS distance FROM faq_knowledge ORDER BY distance LIMIT %s """params=(query_embedding,top_k)# 3. 执行查询cur.execute(sql,params)results=cur.fetchall()# 4. 格式化结果knowledge_list=[]forrowinresults:/

相关新闻

VSCode C/C++ 调试输入问题:MinGW32 vs MinGW64 环境配置 3 步根因排查

VSCode C/C++ 调试输入问题:MinGW32 vs MinGW64 环境配置 3 步根因排查

VSCode C/C 调试输入问题:MinGW32 与 MinGW64 环境配置深度解析 当你在 Windows 平台上使用 VSCode 调试 C/C 程序时,是否遇到过 DEBUG CONSOLE 无法进行输入输出的困扰?这个问题看似简单,实则背后隐藏着 MinGW 环境选择的玄机。…

2026/7/12 3:28:28 阅读更多 →
Mythos Preview:AI驱动的自动化渗透测试范式革命

Mythos Preview:AI驱动的自动化渗透测试范式革命

1. 项目概述:一场静默却震耳欲聋的AI能力跃迁 这周,整个AI安全圈没有爆炸性新闻稿,没有铺天盖地的发布会直播,只有一份措辞克制、数据密集的系统卡片(System Card)和一份由英国AI安全研究所(AIS…

2026/7/12 3:26:27 阅读更多 →
Conda vs Pip 包管理深度对比:5个场景下的选择策略与性能影响

Conda vs Pip 包管理深度对比:5个场景下的选择策略与性能影响

Conda与Pip的终极对决:5个深度学习场景下的智能选择指南当你在深夜调试一个复杂的深度学习模型时,突然遭遇"Could not find a version that satisfies the requirement"错误——这种时刻,选择正确的包管理工具可能比算法本身更影响…

2026/7/12 3:26:27 阅读更多 →

最新新闻

【头部科技公司内部文档泄露】:ChatGPT功能创意筛选矩阵(含权重评分表+优先级决策树)

【头部科技公司内部文档泄露】:ChatGPT功能创意筛选矩阵(含权重评分表+优先级决策树)

更多请点击: https://kaifayun.com 第一章:ChatGPT功能创意筛选矩阵的顶层设计与战略定位 ChatGPT功能创意筛选矩阵并非简单的需求清单或优先级排序表,而是一个融合技术可行性、用户价值密度、商业可持续性与合规边界的多维决策框架。其顶层…

2026/7/12 4:30:54 阅读更多 →
Midjourney否定词失效真相大起底(附2024最新权重衰减对照表)

Midjourney否定词失效真相大起底(附2024最新权重衰减对照表)

更多请点击: https://intelliparadigm.com 第一章:Midjourney否定词失效现象的系统性观察 近期大量用户反馈,在 Midjourney v6 及更高版本中,传统否定提示词(如 --no text, signature, watermark)在复杂构…

2026/7/12 4:30:54 阅读更多 →
Crunch 3.6 密码字典生成实战:5种高级模式与10倍效率优化

Crunch 3.6 密码字典生成实战:5种高级模式与10倍效率优化

Crunch 3.6 密码字典生成实战:5种高级模式与10倍效率优化在渗透测试和CTF竞赛中,高质量的密码字典往往是成功的关键。Crunch作为一款经典的字典生成工具,其3.6版本提供了更多精细化控制参数,能够根据已知密码特征生成高度针对性的…

2026/7/12 4:28:54 阅读更多 →
Java基础语法6(类与对象)

Java基础语法6(类与对象)

从设计一个“扫清购物车”的初步程序来理解与运用类与对象类与对象的定义类的定义对象的创建设计“扫清购物车”程序类与对象的定义 1.类: class 类别的意思 一个类别的模版,也是一种数据类型(复合型数据类型),可以包含一组数据变量以及可复…

2026/7/12 4:24:53 阅读更多 →
C语言单链表:带头/不带头节点 2种初始化与4种插入操作性能对比

C语言单链表:带头/不带头节点 2种初始化与4种插入操作性能对比

C语言单链表设计:带头节点与不带头节点的工程实践与性能抉择在数据结构的世界里,单链表作为最基础的链式存储结构,其设计决策直接影响着代码的健壮性和执行效率。对于C语言开发者而言,是否在单链表中使用头节点(又称哨…

2026/7/12 4:24:53 阅读更多 →
【AI 工具】ChatGPT Work 和 Codex 到底啥区别?90% 的人都选错了模式

【AI 工具】ChatGPT Work 和 Codex 到底啥区别?90% 的人都选错了模式

哈喽大家好,我是謓泽。最近 OpenAI 新上线的这俩 Agent 模式 —— Work 和 Codex,后台好多同学私信问我,说看着都是长任务智能体,到底有啥不一样?自己该用哪个?说真的,我刚出来的时候也研究了好…

2026/7/12 4:18:46 阅读更多 →

日新闻

互联网大厂 Java 求职面试:燕双非的搞笑回答与技术探讨

互联网大厂 Java 求职面试:燕双非的搞笑回答与技术探讨

互联网大厂 Java 求职面试:燕双非的搞笑回答与技术探讨 在一个阳光明媚的上午,互联网大厂的面试官坐在桌前,准备迎接他的面试候选人——燕双非,一个以搞笑和幽默著称的程序员。第一轮提问 面试官:燕双非,作…

2026/7/12 0:03:13 阅读更多 →
车载以太网PMA测试设备选型:示波器、VNA、信号源3类仪器关键参数与预算评估

车载以太网PMA测试设备选型:示波器、VNA、信号源3类仪器关键参数与预算评估

车载以太网PMA测试设备选型:示波器、VNA、信号源3类仪器关键参数与预算评估在智能驾驶和车联网技术快速发展的今天,车载以太网作为新一代车载网络的核心传输技术,其物理层性能直接决定了数据传输的可靠性和稳定性。1000BASE-T1作为当前主流的…

2026/7/12 0:03:14 阅读更多 →
VSCode EIDE 插件 2.0:APM32/STM32 项目迁移实战,5步完成Keil工程转换

VSCode EIDE 插件 2.0:APM32/STM32 项目迁移实战,5步完成Keil工程转换

VSCode EIDE 插件 2.0:APM32/STM32 项目迁移实战指南嵌入式开发领域正经历一场工具链的静默革命。当传统Keil用户首次打开VSCode的扩展市场搜索EIDE时,往往会惊讶于这个看似简单的插件竟能重构十余年的开发习惯。本文将揭示如何用五个精准步骤&#xff0…

2026/7/12 0:03:14 阅读更多 →

周新闻

互联网大厂 Java 求职面试:燕双非的搞笑回答与技术探讨

互联网大厂 Java 求职面试:燕双非的搞笑回答与技术探讨

互联网大厂 Java 求职面试:燕双非的搞笑回答与技术探讨 在一个阳光明媚的上午,互联网大厂的面试官坐在桌前,准备迎接他的面试候选人——燕双非,一个以搞笑和幽默著称的程序员。第一轮提问 面试官:燕双非,作…

2026/7/12 0:03:13 阅读更多 →
车载以太网PMA测试设备选型:示波器、VNA、信号源3类仪器关键参数与预算评估

车载以太网PMA测试设备选型:示波器、VNA、信号源3类仪器关键参数与预算评估

车载以太网PMA测试设备选型:示波器、VNA、信号源3类仪器关键参数与预算评估在智能驾驶和车联网技术快速发展的今天,车载以太网作为新一代车载网络的核心传输技术,其物理层性能直接决定了数据传输的可靠性和稳定性。1000BASE-T1作为当前主流的…

2026/7/12 0:03:14 阅读更多 →
VSCode EIDE 插件 2.0:APM32/STM32 项目迁移实战,5步完成Keil工程转换

VSCode EIDE 插件 2.0:APM32/STM32 项目迁移实战,5步完成Keil工程转换

VSCode EIDE 插件 2.0:APM32/STM32 项目迁移实战指南嵌入式开发领域正经历一场工具链的静默革命。当传统Keil用户首次打开VSCode的扩展市场搜索EIDE时,往往会惊讶于这个看似简单的插件竟能重构十余年的开发习惯。本文将揭示如何用五个精准步骤&#xff0…

2026/7/12 0:03:14 阅读更多 →

月新闻