惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

C
Check Point Blog
罗磊的独立博客
博客园 - 叶小钗
Google DeepMind News
Google DeepMind News
Hugging Face - Blog
Hugging Face - Blog
人人都是产品经理
人人都是产品经理
J
Java Code Geeks
WordPress大学
WordPress大学
大猫的无限游戏
大猫的无限游戏
Blog — PlanetScale
Blog — PlanetScale
F
Fortinet All Blogs
小众软件
小众软件
M
MIT News - Artificial intelligence
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
酷 壳 – CoolShell
酷 壳 – CoolShell
The GitHub Blog
The GitHub Blog
A
About on SuperTechFans
Y
Y Combinator Blog
Recorded Future
Recorded Future
量子位
美团技术团队
S
Security @ Cisco Blogs
G
Google Developers Blog
Cyberwarzone
Cyberwarzone
C
Cybersecurity and Infrastructure Security Agency CISA
博客园 - 三生石上(FineUI控件)
博客园 - 司徒正美
D
Docker
S
Schneier on Security
T
Tor Project blog
阮一峰的网络日志
阮一峰的网络日志
T
Threatpost
P
Privacy & Cybersecurity Law Blog
C
Cisco Blogs
L
Lohrmann on Cybersecurity
NISL@THU
NISL@THU
Microsoft Azure Blog
Microsoft Azure Blog
博客园 - 聂微东
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
T
The Exploit Database - CXSecurity.com
A
Arctic Wolf
I
Intezer
Latest news
Latest news
Martin Fowler
Martin Fowler
G
GRAHAM CLULEY
B
Blog
V
Vulnerabilities – Threatpost
The Register - Security
The Register - Security
S
Securelist
T
Tenable Blog

博客园 - Rickie

DeepSeek-V3 解读:优化效率与规模 Milvus向量数据库入门实践 LangChain轻松入门和开发实践 Hugging Face 轻松入门 PyTorch深度学习零基础入门 Spring Security OAuth2+JWT开发实践 Spring Security开发实践 Redis 7.x 入门和开发实战 RedisInsight :Redis 官方可视化工具 Hadoop v3.1 大数据技术快速入门 《Apache RocketMQ 深入浅出》系列文章 Kafka v2.3 快速入门与实践 Apache Doris 轻松入门和快速实践 一步一步编译最新版Apache Doris 0.15版本的详细过程 COLA 4.x和DDD项目实践精粹 阿里开源COLA 4.0源码编译和部署过程 Java实体映射工具MapStruct 与BeanUtils性能比较 阿里DDD项目最佳实践-COLA 架构总览 Java实体映射工具MapStruct详解
一步一步构建RAG智能问答系统
Rickie · 2025-01-03 · via 博客园 - Rickie

虽然LLM(大语言模型)非常强大,但它们对于它们未经训练的信息一无所知。如果想使用LLM来回答它未经训练的文档相关问题,我们需要向其提供这些文档的信息。最常用的方法是通过"检索增强生成"( Retrieval Augmented Generation,RAG)。

检索增强生成的思想是,在给定一个问题时,首先进行检索步骤以获取任何相关文档。然后将这些文档与原始问题一起传递给语言模型,并让它生成一个回答。然而,为了做到这一点,首先需要将文档以适合进行此类查询的格式呈现。

本专栏介绍了这两个步骤的核心思想:

(1)将文档摄入到向量数据库Milvus中进行存储

为了使用语言模型与数据进行交互,首先需要将文档转换为合适的嵌入格式。通过将文档转换为嵌入向量,并存储到向量数据库中,可以让后续的检索操作更加快捷方便。

将文档摄入到向量数据库中可以参考如下几个步骤来完成:

  • 加载文档(使用文档加载器)
  • 分割文档(使用文本分割器)
  • 为文档创建嵌入(使用文本嵌入模型)
  • 将文档和嵌入存储到向量数据库中(Milvus向量数据库),并构建索引

(2) 进行检索增强生成链

现在我们有了一个向量数据库和索引,如何使用它进行生成呢?可以将此过程分为以下步骤:

  • 接收用户提问(Question)
  • 在向量数据库和索引中查找与问题相关的文档
  • 使用问题和相关文档构建一个提示词 Prompt
  • 将Prompt 传递给语言模型
  • 获取结果并返回给用户

专栏大纲

在过去的一个月中,我有幸参与了数场研讨会,其中一个不言而喻的共识是,检索增强生成(Retrieval Augmented Generation,简称RAG)技术在过去一年里已迅速成为人工智能界的宠儿,并被众多AI团队广泛应用。

所谓RAG,是指一种借助检索外部信息来增强大型语言模型(LLM)的能力,从而提升模型应答品质的技术。

RAG之所以风头正劲,是因为它将语言模型与外部知识库巧妙结合,从而能够生成更为精准、更具事实依据的内容。RAG模型通过无缝融合检索与生成过程,能够实时从庞大的数据库中提取相关信息并融入所生成的文本之中,有效避免了模型输出中可能出现的虚假或错误信息。目前,许多AI团队正把RAG视为研究重点,众多工具如向量数据库、LLM接口及其编排工具等也应运而生,旨在简化RAG的实施流程。

尽管RAG的巨大潜力不言自明,但关于如何最佳运用这一技术的实践仍在不断演进之中。要部署一个高效的RAG系统,需要对各个构成要素进行大量实验和优化,包括数据集、模型嵌入、分块策略等方面。

在本专栏中,我们将利用LangChain框架和Milvus向量数据库,逐步搭建一个RAG智能问答系统。内容将涵盖RAG的基础知识、技术选型、准备HTML文档数据、应用嵌入模型和sentence-transformers库、构建和索引Milvus向量数据库、文档的加载与分割、向量数据及元数据的存储、近似最邻近(ANN)向量搜索、上下文和元数据的整合、提示语的拼接,以及基于LLM的大型语言模型生成回复。

 

这一系列内容旨在为读者提供一条从入门到精通的RAG技术之路。