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

第8章:LangChain检索增强生成RAG--2.3Naive RAG

Naive RAG 是一种基本的 RAG 实现,它通过向量搜索从嵌入存储中检索相关内容,并将其注入到提示(prompt)中,以便语言模型能够生成更准确的回答

Naive RAG(简单 RAG)

一旦我们的文档被摄取(参见前面的部分),我们可以创建一个 EmbeddingStoreContentRetriever 来启用简单的 RAG(检索增强生成)功能。

当使用 AI 服务时,可以按照以下方式配置简单的 RAG:

ContentRetriever contentRetriever = EmbeddingStoreContentRetriever.builder()
    .embeddingStore(embeddingStore)
    .embeddingModel(embeddingModel)
    .maxResults(5) // 最多返回 5 个结果
    .minScore(0.75) // 最小相似度分数为 0.75
    .build();

Assistant assistant = AiServices.builder(Assistant.class)
    .chatLanguageModel(model) // 使用指定的语言模型
    .contentRetriever(contentRetriever) // 使用配置好的内容检索器
    .build();

深度解析

1. Naive RAG 的核心组件

Naive RAG 的实现依赖于以下核心组件:

  • EmbeddingStore:存储嵌入向量的数据库,也称为向量数据库。
  • EmbeddingModel:将文本转换为嵌入向量的模型。
  • ContentRetriever:从嵌入存储中检索相关内容的工具。

2. 配置 EmbeddingStoreContentRetriever

EmbeddingStoreContentRetriever 是一个用于从嵌入存储中检索内容的工具。它可以通过以下方式配置:

  • embeddingStore:指定嵌入存储实例。
  • embeddingModel:指定嵌入模型实例。
  • maxResults:指定返回的最大结果数。默认值为 3,但可以根据需要调整。
  • minScore:指定返回结果的最小相似度分数。默认值为 0,但可以通过设置更高的值来过滤掉不那么相似的结果。
ContentRetriever contentRetriever = EmbeddingStoreContentRetriever.builder()
    .embeddingStore(embeddingStore)
    .embeddingModel(embeddingModel)
    .maxResults(5) // 最多返回 5 个结果
    .minScore(0.75) // 最小相似度分数为 0.75
    .build();

3. 配置 AI 服务

在 LangChain4j 中,可以通过 AiServices 构建一个 AI 服务,该服务使用配置好的 ContentRetriever 来检索相关内容,并将其注入到语言模型的提示中。

Assistant assistant = AiServices.builder(Assistant.class)
    .chatLanguageModel(model) // 使用指定的语言模型
    .contentRetriever(contentRetriever) // 使用配置好的内容检索器
    .build();

4. 示例代码

以下是一个完整的示例,展示如何配置和使用 Naive RAG:

// 创建嵌入存储实例
EmbeddingStore embeddingStore = new InMemoryEmbeddingStore<>();

// 创建嵌入模型实例
EmbeddingModel embeddingModel = new OpenAiEmbeddingModel("your-api-key", "text-embedding-ada-002");

// 配置内容检索器
ContentRetriever contentRetriever = EmbeddingStoreContentRetriever.builder()
    .embeddingStore(embeddingStore)
    .embeddingModel(embeddingModel)
    .maxResults(5) // 最多返回 5 个结果
    .minScore(0.75) // 最小相似度分数为 0.75
    .build();


// 配置 AI 服务
Assistant assistant = AiServices.builder(Assistant.class)
    .chatLanguageModel(model) // 使用指定的语言模型
    .contentRetriever(contentRetriever) // 使用配置好的内容检索器
    .build();

// 使用 AI 服务
String userMessage = "How to do Naive RAG with LangChain4j?";
String answer = assistant.chat(userMessage);

System.out.println("Answer: " + answer);

5. 总结

Naive RAG 是一种简单但有效的 RAG 实现,适用于需要快速启用 RAG 功能的场景。通过配置 EmbeddingStoreContentRetriever 和 AiServices,可以轻松地将文档内容检索功能集成到 AI 服务中。这种方法虽然简单,但在许多场景下已经足够有效,尤其是在需要快速原型开发和概念验证时。

官方示例

相关文章:

  • vue 手写分页
  • 【Excel】【VBA】根据内容调整打印区域
  • 高级SQL技术在Python项目中的应用:ORM与深度性能优化
  • 索引有哪些缺点以及具体有哪些索引类型
  • 《QT+PCL 第五章》点云特征-RIFT
  • 智慧城管大屏可视化决策系统
  • 【QT 网络编程】HTTP协议(二)
  • 【Gin】| 框架源码解析 :路由详解
  • jQuery UI 主题:设计、定制与优化指南
  • 【Python 语法】常用 Python 内置函数
  • 【Python爬虫(39)】掌控全局:分布式爬虫的任务管理与监控之道
  • 单元测试的策略有哪些,主要包括什么?
  • 【C/C++】分隔链表 (leetcode T86)
  • DeepSeek写俄罗斯方块手机小游戏
  • 图论 之 最小生成树
  • 深入解析Spring Cloud Config:构建高可用分布式配置中心
  • SpringBoot 新特性
  • C++ 设计模式-模板方法模式
  • 【ROS2】卡尔曼滤波学习:概念、数学推导和C++实现方法
  • 【Linux探索学习】第三十弹——线程互斥与同步(上):深入理解线程保证安全的机制
  • 网站做支付接口/网站排名查询软件
  • 林业公司网站模版/做网站企业
  • 如何在淘宝客上做自己的网站/长春关键词优化公司
  • 引导企业做网站/新品上市怎么做宣传推广
  • 临朐网站制作/营销网站大全
  • 数据库 搭建 网站/优化模型数学建模