当前位置: 首页 > news >正文

AI Agent与RAG结合:构建知识增强型智能体

AI Agent与RAG结合:构建知识增强型智能体

大语言模型(LLM)虽然知识广博,但在面对特定领域问题时往往力不从心——要么产生幻觉,要么知识已经过时。检索增强生成(RAG)技术恰好为 AI Agent è¡¥å 了"实时精准知识"è¿™ä¸€å ³é”®èƒ½åŠ›ã€‚æœ¬æ–‡å°†ç³»ç»Ÿè®²è§£ RAG åŽŸç†ã€å‘é‡æ£€ç´¢æœºåˆ¶ã€æ–‡æ¡£å¤„ç†ç­–ç•¥ä»¥åŠä¸€ä¸ªå®Œæ•´çš„ä»£ç å®žçŽ°ã€‚

一、RAG æ ¸å¿ƒåŽŸç†

1.1 什么是 RAG

RAG(Retrieval-Augmented Generationï¼‰çš„æ ¸å¿ƒæ€æƒ³æ˜¯ï¼šåœ¨ç”Ÿæˆå›žç­”å‰ï¼Œå ˆä»Žå¤–éƒ¨çŸ¥è¯†åº“æ£€ç´¢ç›¸å ³ä¿¡æ¯ï¼Œå°†æ£€ç´¢ç»“æžœä½œä¸ºä¸Šä¸‹æ–‡è¾“å ¥å¤§è¯­è¨€æ¨¡åž‹ï¼Œå¼•å¯¼å ¶ç”Ÿæˆæ›´å‡†ç¡®çš„å›žç­”ã€‚

相比微调 LLM,RAG å ·æœ‰ä¸‰ä¸ªä¼˜åŠ¿ï¼š

  • çŸ¥è¯†å®žæ—¶æ€§ï¼šæ— éœ€é‡æ–°è®­ç»ƒå³å¯æ›´æ–°çŸ¥è¯†åº“
  • å¯æº¯æºï¼šæ¯ä¸ªå›žç­”éƒ½å¯è¿½æº¯åˆ°å ·ä½“æ¥æº
  • 幻觉抑制:检索到的真实信息有效约束模型输出

1.2 æ ‡å‡†æµç¨‹

ä¸€ä¸ªå ¸åž‹çš„ RAG ç³»ç»ŸåŒ å«ï¼šæ–‡æ¡£åŠ è½½ → 文档切分 → å‘é‡åµŒå ¥ → 向量存储 → 检索 → 重排序 → 提示构建 → 生成回答。

二、文档切分策略

2.1 切分策略对比

| 策略 | 说明 | 适用场景 | |------|------|----------| | 固定字符数 | 按固定长度切分 | 通用场景,实现简单 | | 递归字符切分 | å ˆæŒ‰æ®µè½ï¼Œå†æŒ‰å¥å­åˆ‡åˆ† | 结构化文档 | | é‡å åˆ‡åˆ† | 相邻 chunk ä¿ç•™é‡å åŒºåŸŸ | é¿å è¾¹ç•Œä¿¡æ¯ä¸¢å¤± |

2.2 切分实现

import re from typing import List class DocumentChunker: def __init__(self, chunk_size: int = 500, chunk_overlap: int = 100): self.chunk_size = chunk_size self.chunk_overlap = chunk_overlap def split_text(self, text: str) -> List[str]: paragraphs = [p.strip() for p in text.split('\n\n') if p.strip()] chunks = [] for p in paragraphs: if len(p) <= self.chunk_size: chunks.append(p) else: chunks.extend(self._split_by_sentences(p)) return self._merge_small_chunks(chunks) def _split_by_sentences(self, text: str) -> List[str]: sentences = re.split(r'(?<=[。..?!])\s+', text) sentences = [s.strip() for s in sentences if s.strip()] chunks, current = [], "" for s in sentences: if len(current) + len(s) <= self.chunk_size: current += s else: if current: chunks.append(current) overlap = current[-self.chunk_overlap:] if self.chunk_overlap > 0 else "" current = overlap + s if current: chunks.append(current) return chunks def _merge_small_chunks(self, chunks: List[str]) -> List[str]: merged, current = [], "" for chunk in chunks: if len(current) + len(chunk) <= self.chunk_size: current += chunk else: if current: merged.append(current) current = chunk if current: merged.append(current) return merged

三、向量检索与存储

3.1 向量数据库

æ–‡æœ¬é€šè¿‡åµŒå ¥æ¨¡åž‹è½¬æ¢ä¸ºé«˜ç»´å‘é‡ï¼Œå­˜å‚¨åœ¨å‘é‡æ•°æ®åº“ä¸­ã€‚å¸¸è§çš„å¼€æºæ–¹æ¡ˆåŒ æ‹¬ BGE-M3、E5-Mistral 等。下面用纯 Python å®žçŽ°ä¸€ä¸ªå† å­˜å‘é‡åº“ï¼ˆç”Ÿäº§çŽ¯å¢ƒå»ºè®®ä½¿ç”¨ Milvus 或 Chroma):

import numpy as np from typing import List, Tuple, Dict from dataclasses import dataclass @dataclass class Document: id: str content: str embedding: np.ndarray metadata: dict class SimpleVectorStore: def __init__(self, embedding_dim: int =
http://www.jsqmd.com/news/1105694/

相关文章:

  • 如何高效解决Windows苹果设备驱动问题:一键安装完整指南
  • 猫抓浏览器资源嗅探插件:三步快速捕获网页视频音频的终极指南
  • 抖音无水印下载神器:3分钟搞定高清视频保存,告别水印烦恼!
  • 基于LARA-R6001与PIC18LF46K42的VoLTE通信平台开发指南
  • 大模型训练四阶段演化:从规则引擎到无监督预训练
  • PCF8591与MKV42F128VLH16的ADC/DAC信号转换实战
  • 科研工具推荐:专为硕博打造的一体化 AI 写作系统,全流程无需额外软件|PaperRed 一站式平衡写作效率与学术质量
  • TEKLauncher终极方舟启动器:告别MOD管理噩梦的完整解决方案
  • 基于Objection的跨平台移动安全测试脚本实战指南
  • 一文读懂utpasswd架构:Rust如何提升Linux密码工具安全性
  • 三步搞定抖音无水印下载!免费高效批量下载抖音视频的终极指南
  • AI 辅助:UI 色彩层级设计:颜色不是越多越有表现力
  • 漏洞扫描攻击防御实战:从原理识别到四层纵深防护体系构建
  • 工业级4-20mA电流环变送器设计与实现
  • okbiye 毕业论文 AI 写作深度测评|贴合官方操作界面拆解,学生论文创作一站式解决方案
  • 线程池遇到父子任务,有大坑,要注意!
  • openEuler/kiran-tests核心组件揭秘:Behave BDD框架与自动化测试实践
  • STM32与13DOF传感器融合开发实战
  • 终极免费解锁Wand专业版:开源增强工具完整指南
  • 6.25小学期CPP基础语法记录:反转、字符串查找、稳定sort
  • STM32G491RE与TPAFE0808实现多通道信号采集方案
  • GPT-5.5 多智能体协作能力初探:构建自主任务流的技术验证
  • 【课程设计/毕业设计】基于 SpringBoot 的宠物医院物资设备一体化管理系统的设计与实现【附源码、数据库、万字文档】
  • 知医邦ChatiSS查体大模型:四大核心应用场景全面赋能中医全生命周期
  • 别再Ctrl+F了!用IDEA书签实现毫秒级代码定位(附性能对比数据:平均跳转耗时降低87.3%)
  • 5分钟解锁3D魔法:用Deep3D让普通视频瞬间立体化!
  • Python自动化测试实战:从Selenium到Playwright,构建高效测试框架
  • Linux打印机驱动配置终极指南:foo2zjs让100+型号打印机完美工作
  • MAA明日方舟智能助手完整使用指南:5分钟快速上手解放双手
  • 2026年7月最新小程序开发公司深度评测:技术实力、交付能力与行业口碑全景解析,含零代码SAAS、AI编程、源码定制