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

【一天一个知识点】RAG(Retrieval-Augmented Generation,检索增强生成)构建的第一步

RAG(Retrieval-Augmented Generation,检索增强生成)构建的第一步通常是 准备知识库(构建索引)。

准备知识库(构建索引)

也就是说,在 RAG 系统中,最重要的起点是建立可供检索的“外部知识源”,并将其转化为模型可以高效查询的形式。


🔍 步骤1:准备知识库并构建索引

目标:将原始文本资源处理成可供 LLM 检索和调用的向量化知识库。


📁 1. 收集原始知识资料

数据来源:
  • 📄 文本类:PDF、Word、TXT、网页爬虫内容

  • 📊 结构类:Excel、CSV、数据库记录

  • 💬 问答类:FAQ文档、客服记录

  • 📚 行业文档:法规、标准、产品说明、年报等

金融举例:收集银保监会监管文件、理财产品说明书、基金合同、公司章程、业务操作手册等。


✂️ 2. 文本清洗与分段(chunking)

常见处理:
  • 去除HTML标签、空白符、乱码字符

  • 分段规则:

    • 按段落(语义完整优先)

    • 按Token长度(如每段不超过300 tokens)

    • 加入标题、索引、章节号等“元信息”

【第3条】本行客户需完成KYC审查…… (文档:《银行客户识别制度操作细则》)


🔢 3. 向量化编码(Text Embedding)

将每个文本段转换为“向量”,表示其语义。

推荐中文模型:
  • bge-base-zh(讯飞):适配中文问答、中文搜索

  • m3e-base(ModelScope):性能优秀

  • text-embedding-3-large(OpenAI):通用、跨语言

  • GTE-large-zh(百度):金融项目中常见

 
from langchain.embeddings import HuggingFaceEmbeddingsembedding_model = HuggingFaceEmbeddings(model_name="bge-base-zh")
embedding_vector = embedding_model.embed_query("什么是反洗钱监管要求?")

🧠 4. 构建向量索引库(Vector Store)

向量数据库选型:
库名特点是否推荐
FAISS本地轻量,适合原型开发
Qdrant支持 metadata filter,高性能
Milvus海量数据支持,适合生产级部署
Weaviate内建知识图谱支持,支持多租户
ElasticSearch可融合关键词+向量混合检索✅(需插件)
from langchain.vectorstores import FAISSvectorstore = FAISS.from_texts(texts=chunks, embedding=embedding_model)
vectorstore.save_local("faiss_index")

🗂️ 5. 添加元信息(metadata,可选但推荐)

这样后续检索的内容可以带上来源、章节、发布日期等信息,便于“引用可溯源”。

 
{"text": "客户需遵守反洗钱相关法律。","metadata": {"source": "《银行客户操作规范》","section": "第3章-合规管理","date": "2023-10-01"}
}

✅ 最终产出

你将得到一个可供 RAG 检索模块使用的结构化“知识向量库”:

 
[chunk_text_1] → [vector_1]
[chunk_text_2] → [vector_2]
…


📌 金融场景补充注意:

要素注意点
💼 安全性敏感数据需脱敏;内网部署更安全
📚 法规更新自动同步策略建议(定期刷新索引)
🔍 检索精度使用 rerank 模型提升匹配度
🎯 问题类型明确场景(客服问答 vs. 投资分析 vs. 合规审查)决定数据来源类型
📌 审计追踪metadata 中加入文档版本与来源路径,便于合规审查

http://www.xdnf.cn/news/14457.html

相关文章:

  • ARIMA 模型
  • Linux运维新人自用笔记(部署 ​​LAMP:Linux + Apache + MySQL + PHP、部署discuz论坛)
  • 内存泄漏到底是个什么东西?如何避免内存泄漏
  • 楞伽经怎么读
  • 23种设计模式图解
  • ragflow中的pyicu安装与测试
  • 基于YOLOv8+Deepface的人脸检测与识别系统
  • WSL备份与还原
  • 车载网关框架 --- CAN/CANFD网段路由到Ethernet网段时间
  • sparseDrive(2):环境搭建及效果演示
  • C++11函数封装器 std::function
  • 卫星通信链路预算之一:信噪比分配
  • JavaSE: 数组详解
  • JSONP 跨域请求原理解析与实践
  • RabbitMQ消息队列实战指南
  • 亚马逊选品时怎么选择一个产品
  • 智能土木通 - 土木工程专业知识问答系统01:项目简介
  • 逆元 Inverse element
  • c语言学习_函数4
  • 【Dify系列】【Dify 核心功能】【应用类型】【四】【Chatflow】
  • Science 正刊:脊髓损伤患者的复杂触觉离现实又近了一步
  • 观察者模式Observer Pattern
  • 基于STM32的超声波模拟雷达设计
  • 3 Studying《THE CACHE MEMORY BOOK》
  • python3.9成功安装nbextensions
  • 【Linux入门】安装一个Linux内核的虚拟机
  • 【IQA技术专题】-PSNR和SSIM
  • DOM-Based XSS(基于文档对象模型的跨站脚本攻击)
  • leetcode 搜索插入位置 java
  • 定时器时基单元参数配置及计算公式