向量检索(BESRetriever)

简介

向量检索组件(Baidu ElasticSearch Retriever)基于一款Baidu ElasticSearch的内容检索组件,支持根据文本的向量的相似度进行内容检索。

准备工作

在使用Baidu ElasticSearch Retriever进行内容检索之前,需要到Baidu ElasticSearch官网创建相应的集群,详情见教程

注:创建集群时请选择7.10.2版本的ES,否则可能无法使用本组件。

基本用法

以下是有关如何开始使用BESRetriever的代码示例:

import os
import appbuilder

os.environ["APPBUILDER_TOKEN"] = '...'

embedding = appbuilder.Embedding()
segments = appbuilder.Message(["文心一言大模型", "百度在线科技有限公司"])
# 初始化构建索引
vector_index = appbuilder.BESVectorStoreIndex.from_segments(segments=segments, cluster_id=es_cluster_id, user_name=es_username,
                                                            password=es_password, embedding=embedding)
# 获取当前索引中的全部内容
all_content = vector_index.get_all_segments()
print(all_content)
# 转化为retriever
retriever = vector_index.as_retriever()
# 按照query进行检索
query = appbuilder.Message("文心一言")
res = retriever(query=query, top_k=1)
print(res)
# 删除当前索引中的全部内容
vector_index.delete_all_segments()

参数说明

初始化参数说明:

  • segments (Message[List[str]],必填):需要入库的文本段落

  • cluster_id (str,必填):ElacticSearch集群的id,创建集群时获取

  • user_name (str,必填):连接ES集群所需的用户名,创建集群时获取

  • password (str,必填):连接ES集群所需的密码,创建集群时获取

  • embedding (obj,非必填):用于将文本转为向量的模型,默认为Embedding

调用参数说明:

  1. query: 需要检索的内容,数据类型为Message[str],必要参数

  2. top_k: 返回匹配度最高的top_k个结果,默认为1, 非必填

高级用法:

本组件根据向量的相似度进行检索,支持使用不同的embedding方法和索引方式来优化检索的效果。