BES RAG 最佳实践:基于LangChain+BES的私域知识的QA问答系统

Elasticsearch BES

  • 邀测版存储计算分离套餐介绍
  • 功能发布记录
  • 产品描述
    • 基本概念
    • 关键特性
    • 产品介绍
    • 产品性能
      • 4核16GB512GB通用型的3个数据节点实例基准性能指标
      • 8核16GB512GB计算型的3个数据节点实例基准性能测试
      • 16核32GB512GB计算型的3个数据节点实例基准性能指标
      • 4核8GB512GB计算型的3个数据节点实例基准性能测试
      • 8核32GB512GB通用型的3个数据节点实例基准性能指标
      • 16核64GB512GB通用型的3个数据节点实例基准性能指标
      • 概述
  • Python-SDK
    • 实例
    • 异常
    • 日志
    • 节点配置类型
    • 版本更新记录
    • 快速入门
    • 集群
    • BesClient
    • 安装SDK工具包
    • 概述
  • Kibana
    • Kibana使用指南
  • Logstash
    • Logstash使用指南
    • 实例管理
      • 实例详情信息
      • 实例扩缩容
      • 管道管理
      • 创建实例
      • 实例列表
      • 删除实例
  • 开发指南
    • Elasticsearch Restful API
    • 通过其他客户端访问Elasticsearch
    • Elasticsearch Java客户端
      • Low Level REST Client
      • Rest Client操作向量索引示例
      • Java REST Client
      • High Level REST Client
  • Java-SDK
    • 实例
    • 异常
    • 日志
    • 节点配置类型
    • 版本更新记录
    • 快速入门
    • 集群
    • BesClient
    • 安装SDK工具包
    • 概述
  • 向量检索特性
    • 资源规划
    • 关键概念
    • 应用场景
    • 快速入门
    • 算法介绍
    • 能力简介
    • 向量数据库
    • 操作指南
      • 写入和查询数据
      • 训练模型
      • 向量索引缓存管理
      • 创建索引
      • 基于Reciprocal Rank Fusion的融合查询
      • 参数优化
      • 7.4版本兼容说明
    • 最佳实践
      • 调优建议
      • BES RAG 最佳实践:基于LangChain+BES的私域知识的QA问答系统
    • 迁移方案
      • ES dense vector 切换为BES方案
  • ELK
    • 基于ELK构建日志分析系统
  • 增强特性
    • 慢查询隔离
    • 百度NLP中文分词词典动态更新
    • 百度NLP中文分词插件
    • 基于段文件的主从复制
    • 基于BOS的冷热数据分离
  • 快速入门
    • 访问Elasticsearch服务
    • 导入数据并搜索
    • 创建集群
    • 集群资源评估
  • 典型实践
    • 使用BSC将BOS中的数据导入Es
    • 使用BSC将Kafka中的数据导入Es
    • 基于CCR实现多集群跨地域高可用
    • 基于节点磁盘介质的冷热数据分离
  • 服务等级协议SLA
    • 数据迁移服务协议
    • BES服务等级协议SLA(V1.0)
  • 常见问题
    • Spark访问Es常见问题
    • Elasticsearch系统常见问题
    • 常见问题总览
  • 产品定价
    • 预付费
    • 计费说明
    • 配置变更费用说明
    • 后付费
  • API文档
    • 概述
    • 自动续费相关接口
      • 续费列表
      • 查看自动续费
      • 查看自动续费规则列表
      • 续费操作
      • 更新自动续费规则
      • 删除自动续费规则
      • 创建自动续费规则
    • 插件配置接口
      • 上传自定义插件
      • 卸载系统默认插件
      • 上传nlp词典
      • 安装系统默认插件
      • 获取默认和自定义插件列表
      • 卸载自定义插件
      • 安装自定义插件
      • 删除自定义插件
      • 查看nlp词典
    • 日志管理相关接口
      • 查看日志导出任务记录
      • 创建日志导出任务
      • 日志设置
      • 日志查询
    • 标签接口
      • 查询标签列表
      • 批量新增标签
      • 单个集群更新标签
    • 智能巡检接口
      • 查看近7天已完成的巡检任务列表
      • 近七天巡检概况
      • 查看手动巡检任务的配置
      • 集群巡检授权
      • 列举所有可选巡检项
      • 查询是否可以提交巡检任务
      • 最新一次巡检概况
      • 查看集群是否开启自动巡检
      • 修改手动巡检任务的配置
      • 开启或关闭自动巡检
      • 提交手动巡检任务
      • 查询今日已执行完成的手动巡检次数
      • 查看某巡检任务的执行状态和结果
    • 集群相关接口
      • 获取操作历史信息
      • 删除集群
      • 新增节点类型
      • 开启和关闭https
      • 查看集群详情信息
      • 重置密码
      • EIP绑定
      • EIP解绑
      • 是否开启Grafana监控
      • 获取数据量观测数据
      • 查看集群列表
      • 上传NLP分词词典
      • 创建集群
      • 智能评估
      • 集群blb信息
      • 用户可用代金券列表
      • 停止集群
      • 扩容集群
      • 启动集群
      • 重启集群
    • 实例相关接口
      • 批量停止实例
      • 启动实例
      • 查看缩容节点列表
      • 数据迁移
      • 数据迁移系统建议
      • 批量启动实例
      • 数据迁移回滚
      • 停止实例
      • 数据迁移节点列表
      • 删除实例
    • 配置修改相关接口
      • 获取同义词文件列表
      • 查看集群配置
      • 删除同义词配置文件
      • 上传同义词配置文件
      • 配置修改
    • 定时调度
      • 更新定时调度任务
      • 删除定时调度任务
      • 创建和更新定时调度任务
      • 查看定时调度任务
  • API3.0
    • 集群相关接口
      • 删除集群
  • Elasticsearch
    • 用户手册
      • YML参数配置
      • 权限管理
      • 智能巡检
      • 数据迁移
      • 基于BOS的快照与恢复
      • 集群列表
      • 账号使用说明
      • 多可用区部署
      • 定时调度
      • 数据量观测
      • 日志查询
        • 日志查询(旧)
        • 日志查询(新)
        • 日志导出
        • 查询语法
      • 集群配置
        • 配置同义词
      • 插件管理
        • 上传与安装自定义插件
        • Elasticsearch插件列表
        • 系统默认插件
          • analysis-pinyin拼音分词插件
          • IK中文分词插件与动态更新词典
          • compression-zstd插件
          • CCR插件
          • 限流插件
          • 动态同义词插件
          • 简繁体转换插件
          • ingest attachment插件
          • SQL插件
      • 配置变更
        • 节点数据迁移
        • 集群变配说明与建议
        • 集群扩缩容
      • 版本升级
        • 升级版本
        • 内核版本说明
        • 升级检查
      • 集群监控报警
        • 监控查看及指标说明
        • 配置报警
      • 集群管理
        • 集群重启
        • 变更HTTPS协议用户指南
        • 节点启停
        • 查看集群信息
        • 集群创建
        • 公网绑定
        • 修改集群名称
        • 跨可用区迁移集群
        • 集群删除
        • 集群列表
        • 自动续费
        • 密码重置
        • ES服务区域代码
      • 账户管理
        • 多用户访问控制
所有文档
menu
没有找到结果,请重新输入

Elasticsearch BES

  • 邀测版存储计算分离套餐介绍
  • 功能发布记录
  • 产品描述
    • 基本概念
    • 关键特性
    • 产品介绍
    • 产品性能
      • 4核16GB512GB通用型的3个数据节点实例基准性能指标
      • 8核16GB512GB计算型的3个数据节点实例基准性能测试
      • 16核32GB512GB计算型的3个数据节点实例基准性能指标
      • 4核8GB512GB计算型的3个数据节点实例基准性能测试
      • 8核32GB512GB通用型的3个数据节点实例基准性能指标
      • 16核64GB512GB通用型的3个数据节点实例基准性能指标
      • 概述
  • Python-SDK
    • 实例
    • 异常
    • 日志
    • 节点配置类型
    • 版本更新记录
    • 快速入门
    • 集群
    • BesClient
    • 安装SDK工具包
    • 概述
  • Kibana
    • Kibana使用指南
  • Logstash
    • Logstash使用指南
    • 实例管理
      • 实例详情信息
      • 实例扩缩容
      • 管道管理
      • 创建实例
      • 实例列表
      • 删除实例
  • 开发指南
    • Elasticsearch Restful API
    • 通过其他客户端访问Elasticsearch
    • Elasticsearch Java客户端
      • Low Level REST Client
      • Rest Client操作向量索引示例
      • Java REST Client
      • High Level REST Client
  • Java-SDK
    • 实例
    • 异常
    • 日志
    • 节点配置类型
    • 版本更新记录
    • 快速入门
    • 集群
    • BesClient
    • 安装SDK工具包
    • 概述
  • 向量检索特性
    • 资源规划
    • 关键概念
    • 应用场景
    • 快速入门
    • 算法介绍
    • 能力简介
    • 向量数据库
    • 操作指南
      • 写入和查询数据
      • 训练模型
      • 向量索引缓存管理
      • 创建索引
      • 基于Reciprocal Rank Fusion的融合查询
      • 参数优化
      • 7.4版本兼容说明
    • 最佳实践
      • 调优建议
      • BES RAG 最佳实践:基于LangChain+BES的私域知识的QA问答系统
    • 迁移方案
      • ES dense vector 切换为BES方案
  • ELK
    • 基于ELK构建日志分析系统
  • 增强特性
    • 慢查询隔离
    • 百度NLP中文分词词典动态更新
    • 百度NLP中文分词插件
    • 基于段文件的主从复制
    • 基于BOS的冷热数据分离
  • 快速入门
    • 访问Elasticsearch服务
    • 导入数据并搜索
    • 创建集群
    • 集群资源评估
  • 典型实践
    • 使用BSC将BOS中的数据导入Es
    • 使用BSC将Kafka中的数据导入Es
    • 基于CCR实现多集群跨地域高可用
    • 基于节点磁盘介质的冷热数据分离
  • 服务等级协议SLA
    • 数据迁移服务协议
    • BES服务等级协议SLA(V1.0)
  • 常见问题
    • Spark访问Es常见问题
    • Elasticsearch系统常见问题
    • 常见问题总览
  • 产品定价
    • 预付费
    • 计费说明
    • 配置变更费用说明
    • 后付费
  • API文档
    • 概述
    • 自动续费相关接口
      • 续费列表
      • 查看自动续费
      • 查看自动续费规则列表
      • 续费操作
      • 更新自动续费规则
      • 删除自动续费规则
      • 创建自动续费规则
    • 插件配置接口
      • 上传自定义插件
      • 卸载系统默认插件
      • 上传nlp词典
      • 安装系统默认插件
      • 获取默认和自定义插件列表
      • 卸载自定义插件
      • 安装自定义插件
      • 删除自定义插件
      • 查看nlp词典
    • 日志管理相关接口
      • 查看日志导出任务记录
      • 创建日志导出任务
      • 日志设置
      • 日志查询
    • 标签接口
      • 查询标签列表
      • 批量新增标签
      • 单个集群更新标签
    • 智能巡检接口
      • 查看近7天已完成的巡检任务列表
      • 近七天巡检概况
      • 查看手动巡检任务的配置
      • 集群巡检授权
      • 列举所有可选巡检项
      • 查询是否可以提交巡检任务
      • 最新一次巡检概况
      • 查看集群是否开启自动巡检
      • 修改手动巡检任务的配置
      • 开启或关闭自动巡检
      • 提交手动巡检任务
      • 查询今日已执行完成的手动巡检次数
      • 查看某巡检任务的执行状态和结果
    • 集群相关接口
      • 获取操作历史信息
      • 删除集群
      • 新增节点类型
      • 开启和关闭https
      • 查看集群详情信息
      • 重置密码
      • EIP绑定
      • EIP解绑
      • 是否开启Grafana监控
      • 获取数据量观测数据
      • 查看集群列表
      • 上传NLP分词词典
      • 创建集群
      • 智能评估
      • 集群blb信息
      • 用户可用代金券列表
      • 停止集群
      • 扩容集群
      • 启动集群
      • 重启集群
    • 实例相关接口
      • 批量停止实例
      • 启动实例
      • 查看缩容节点列表
      • 数据迁移
      • 数据迁移系统建议
      • 批量启动实例
      • 数据迁移回滚
      • 停止实例
      • 数据迁移节点列表
      • 删除实例
    • 配置修改相关接口
      • 获取同义词文件列表
      • 查看集群配置
      • 删除同义词配置文件
      • 上传同义词配置文件
      • 配置修改
    • 定时调度
      • 更新定时调度任务
      • 删除定时调度任务
      • 创建和更新定时调度任务
      • 查看定时调度任务
  • API3.0
    • 集群相关接口
      • 删除集群
  • Elasticsearch
    • 用户手册
      • YML参数配置
      • 权限管理
      • 智能巡检
      • 数据迁移
      • 基于BOS的快照与恢复
      • 集群列表
      • 账号使用说明
      • 多可用区部署
      • 定时调度
      • 数据量观测
      • 日志查询
        • 日志查询(旧)
        • 日志查询(新)
        • 日志导出
        • 查询语法
      • 集群配置
        • 配置同义词
      • 插件管理
        • 上传与安装自定义插件
        • Elasticsearch插件列表
        • 系统默认插件
          • analysis-pinyin拼音分词插件
          • IK中文分词插件与动态更新词典
          • compression-zstd插件
          • CCR插件
          • 限流插件
          • 动态同义词插件
          • 简繁体转换插件
          • ingest attachment插件
          • SQL插件
      • 配置变更
        • 节点数据迁移
        • 集群变配说明与建议
        • 集群扩缩容
      • 版本升级
        • 升级版本
        • 内核版本说明
        • 升级检查
      • 集群监控报警
        • 监控查看及指标说明
        • 配置报警
      • 集群管理
        • 集群重启
        • 变更HTTPS协议用户指南
        • 节点启停
        • 查看集群信息
        • 集群创建
        • 公网绑定
        • 修改集群名称
        • 跨可用区迁移集群
        • 集群删除
        • 集群列表
        • 自动续费
        • 密码重置
        • ES服务区域代码
      • 账户管理
        • 多用户访问控制
  • 文档中心
  • arrow
  • ElasticsearchBES
  • arrow
  • 向量检索特性
  • arrow
  • 最佳实践
  • arrow
  • BES RAG 最佳实践:基于LangChain+BES的私域知识的QA问答系统
本页目录
  • RAG介绍
  • 基于BES的QA问答系统
  • 版本依赖说明
  • QA问答Demo
  • 用例
  • 系统预装
  • 加载文档
  • 文本向量化
  • 向量存储
  • 效果展示
  • 总结

BES RAG 最佳实践:基于LangChain+BES的私域知识的QA问答系统

更新时间:2025-08-20

RAG介绍

RAG 是 Retrieval Augmented Generation 的缩写,意思是检索增强生成。它是一种利用大语言模型(LLM)和 Elasticsearch 等搜索引擎,从海量的文本数据中检索出相关的信息,然后结合这些信息生成新的文本的方法。RAG 可以用于实现多种应用,如知识问答、文本摘要、对话生成等。 RAG 最终效果的达到,关键在于准确的理解用户的问题,准确且丰富的上下文数据,优秀的生成式大模型,合适的 prompt 等。

基于BES的QA问答系统

百度智能云 ElasticSearch(以下简称 BES) 是兼容开源的分布式检索分析服务。为结构化/非结构化数据提供低成本、高性能及可靠性的检索、分析平台级产品服务,向量能力方面,支持多种索引类型和相似度距离算法。本文旨在介绍基于LangChain和BES搭建一个简单的基于文档的 QA 问答系统。

版本依赖说明

lanchain >= 0.0.324

qianfan >= 0.0.9

python >= 3.9

python elasticsearch client(>=7.10.2, <8.0.0)

QA问答Demo

用例

此处展示了如何使用 Langchian + BES 将文档进行加载、切分并转为向量后,存储在 BES 中,根据提问的 query 进行回答的样板间。

基于 LangChain,将一个非结构化文件搭建私域知识的架构图如下:

QA问答系统架构图.png

其中向量存储的部分采用BES的向量数据库能力,整体的架构图如下:

基于BES的QA问答系统架构图.png

系统预装

首先需要在本地执行

Plain Text
1! pip install langchain 
2! pip install qianfan 
3! pip install elasticsearch == 7.10.2

加载文档

文档加载包含文档的加载和切分。

Plain Text
1from langchain.document_loaders.unstructured import UnstructuredFileLoader
2from langchain.text_splitter import RecursiveCharacterTextSplitter
3
4loader = UnstructuredFileLoader("test.pdf")
5document_data = loader.load()
6text_splitter = RecursiveCharacterTextSplitter(chunk_size=200, chunk_overlap=0)
7split_docs = text_splitter.split_documents(document_data)

文本向量化

在文本向量化方面,向量化的算法选择的是 text2vector 模型,向量化维度是768维。

Plain Text
1from langchain.embeddings.huggingface import HuggingFaceEmbeddings
2import sentence_transformers
3
4embeddings = HuggingFaceEmbeddings(model_name="shibing624/text2vec-base-chinese")
5embeddings.client = sentence_transformers.SentenceTransformer(embeddings.model_name)

向量存储

本文中的向量存储是用的百度云ElasticSearch 产品,需要提前有一个 BES 集群,具体使用详见 ElasticSearch

Plain Text
1from langchain.vectorstores import BESVectorStore
2
3db = BESVectorStore.from_documents(
4  documents=split_docs, embedding=embeddings, bes_url="http://user:password@host:ip", index_name=INDEX_NAME, vector_query_field='vector'
5)
6
7db.client.indices.refresh(index=INDEX_NAME)
8retriever = db.as_retriever()

效果展示

在本文的案例中,上传的文档格式是 pdf 文档,主要内容是对国内 AI 大模型领域做了一个完整综述。

问题和回答描述如下:

Plain Text
1> 问题:
2人工智能在落地过程中面临的挑战性问题有哪些?
3
4> 回答:
5人工智能在落地过程中面临的挑战性问题有:
6
71. 现有 AI 技术使用门槛高,依赖于 AI 从业者选择合适模型、设计合理参数。
82. 无法保证一定能从数据中找到有价值的信息,例如面对大量的无用或者无关的信息,AI 算法并不能完全保证从中找出真正有价值的信息。
93. 现有的模型大多数在训练时用的是单台设备或者单机集群,无法很好的扩展到大规模的集群中去,在算力上也无法满足大规模数据处理的需求。
Plain Text
1问题:
2本文从哪些层次介绍数据管理技术如何支持和优化人工智能技术?
3回答:
4根据原文信息得出,本文从行优化、物理执行优化、数据管理四个层次介绍数据管理技术如何支持和优化人工智能技术。
5文中提到,行优化、物理执行优化、数据管理四个方面综述数据库技术如何优化人工智能的使用和执行效率,并给出未来人工智能技术与数据库内核结合的挑战和机遇。
Plain Text
1问题:
2面向AI的数据管理技术研究展望与未来趋势有哪些?
3回答:
4很抱歉,我无法回答面向AI的数据管理技术研究展望与未来趋势有哪些,但我可以提供一些相关信息。
5目前,面向AI的数据管理技术已经成为研究的热点之一,随着人工智能技术的不断发展,数据管理技术也面临着越来越多的挑战和机遇。未来,面向AI的数据管理技术将会朝着以下几个方向发展:
6智能化:随着人工智能技术的不断发展,智能化数据管理技术将会成为未来的重要趋势。通过利用机器学习、深度学习等技术,实现对数据的自动化分类、标注、检索等功能,提高数据管理的效率和精度。
7云原生:随着云计算技术的不断发展,云原生数据管理技术也将会成为未来的重要趋势。通过利用云平台提供的资源和管理能力,实现对数据的分布式存储、处理、分析等功能,提高数据管理的可扩展性和灵活性。
8隐私保护:随着人们对隐私保护的关注度不断提高,面向AI的数据管理技术也将会更加注重隐私保护。通过采用加密、匿名化等技术手段,保护用户隐私,提高数据管理的安全性和可信度。
9多模态数据管理:随着物联网、社交媒体等应用的不断发展,多模态数据管理技术也将会成为未来的重要趋势。通过整合不同类型的数据源,实现对图像、文本、音频等多种类型数据的统一管理和分析,提高数据管理的全面性和深入性。
10总之,面向AI的数据管理技术将会朝着智能化、云原生、隐私保护和多模态数据管理方向不断发展,为人工智能技术的发展提供更加全面和高效的数据支持。

总结

本文介绍了基于 LangChain 实现一个简单的问答系统,其中对于私域知识的向量存储采用百度智能云的 ElasticSearch 产品,将 BES的向量检索和存储的能力集成进入 LangChain 中,一方面发挥 BES 低成本、高性能的向量检索能力,另一方面,给LangChain社区开发者和使用者提供了一种向量检索的能力。

上一篇
调优建议
下一篇
迁移方案