功能介绍
search() 接口用于在指定的文件内,查找与给定文本信息相似的 Top K 条文本信息。
支持指定文件名称检索最相似的文本信息。
支持文件名搭配文件元数据的标量字段的 Filter 表达式检索最相似的文本信息。
支持仅使用文件元数据的标量字段的 Filter 表达式检索最相似的文本信息。
def search( content: str, document_set_name: List[str] | None = None, expand_chunk: list | None = None, rerank: Rerank | None = None, filter: Filter | None = None, limit: int | None = None, timeout: float | None = None ) -> List[SearchResult]
使用示例
如下示例,在文件
腾讯云向量数据库.pdf中,检索与什么是向量数据库相似的文本信息,并使用标量字段 author 与 tags 的 Filter 表达式一并过滤文件。import tcvectordbfrom tcvectordb.model.document import Filterfrom tcvectordb.model.enum import ReadConsistency#create a database client objectclient = tcvectordb.RPCVectorDBClient(url='http://10.0.X.X:80', username='root', key='eC4bLRy2va******************************', read_consistency=ReadConsistency.EVENTUAL_CONSISTENCY, timeout=30)# 指定文件上传所属的文件db = client.database('db-test-ai')coll_view = db.collection_view('coll-ai-files')doc_list = coll_view.search(content='什么是向量数据库',document_set_name = ['腾讯云向量数据库.pdf'],expand_chunk=[1, 0],filter=Filter(Filter.In("author",["Tencent","tencent"])).And(Filter.Include("tags",["AI","Embedding"])),limit=3)for doc in doc_list:print(vars(doc))
如下示例,通过文件 meta 信息的标量字段 author 的 Filter 表达式,检索与
什么是向量数据库相似的文本信息。import tcvectordbfrom tcvectordb.model.document import Filterfrom tcvectordb.model.enum import ReadConsistency#create a database client objectclient = tcvectordb.RPCVectorDBClient(url='http://10.0.X.X', username='root', key='eC4bLRy2va******************************', read_consistency=ReadConsistency.EVENTUAL_CONSISTENCY, timeout=30)# 指定文件上传所属的文件db = client.database('db-test-ai')coll_view = db.collection_view('coll-ai-files')doc_list = coll_view.search(content='什么是向量数据库',expand_chunk=[1, 0],filter=Filter("author=\\"Tencent\\""),limit=3)for doc in doc_list:print(vars(doc))
入参描述
参数名称 | 是否必选 | 参数含义及配置方法 |
content | 是 | 以 String 类型输入检索的文本信息 |
expand_chunk | 否 | 以数组形式配置检索的目标信息所需向前扩展的段落数量以及向后扩展的段落数。例如,输入[2,3],指所检索到的 Chunk 返回时,同时返回其之前的 2个段落与之后的3个段落。 段落指文件在上传存储时,自动向量化拆分的段落。 默认值:[1,1]。 |
document_set_name | 否 | 表示要查询的文档的名称,支持批量查询,数组元素范围[1,10]。 |
filter | 否 | 使用创建 CollectionView 指定的 Filter 索引的字段设置查询过滤表达式。Filter 表达式格式为 <field_name><operator><value>,多个表达式之间支持 and(与)、or(或)、not(非)关系。具体信息,请参见 混合检索。其中: <field_name>:表示要过滤的字段名。 <operator>:表示要使用的运算符。 string :匹配单个字符串值(=)、排除单个字符串值(!=)、匹配任意一个字符串值(in)、排除所有字符串值(not in)。其对应的 Value 必须使用英文双引号括起来。 uint64:大于(>)、大于等于(>=)、等于(=)、小于(<)、小于等于(<=)。例如:expired_time > 1623388524。 array:数组类型,包含数组元素之一(include)、排除数组元素之一(exclude)、全包含数组元素(include all)。例如,name include (\\"Bob\\", \\"Jack\\")。 <value>:表示要匹配的值。 示例: Filter('author="jerry"').And('page>20') |
limit | 是 | 指定返回最相似的 Top K 的 K 的值。 |
出参描述
如下为检索到的相似数据,返回最相似的 Top 3 条数据。
[{"score": 0.855039119720459,"data": {"text": "## 腾讯云向量数据库是什么?\\n\\n腾讯云向量数据库是一款全托管的自研企业级分布式数据库服务,专用于存储、检索、分析多维向量数据。该数据库支持多种索引类型和相似度计算方法,单索引支持10亿级向量规模,可支持百万级QPS及毫秒级查询延迟。腾讯云向量数据库不仅能为大模型提供外部知识库,提高大模型回答的准确性,还可广泛应用于推荐系统、NLP服务、计算机视觉、智能客服等AI领域。\\n\\n","startPos": 1154,"endPos": 1342,"pre": ["## 向量数据库\\n\\n## 产品简介\\n\\n## 腾讯云向量数据库\\n\\n最近更新时间:2023-07-2714:46:31\\n\\n本页面旨在通过回答几个问题来让您大致了解腾讯云向量数据库(TencentCloudVectorDB)。读完本页后,您将了解腾讯云向量数据库是什么、它是如何工作的、关键概念、为什么使用腾讯云向量数据库、支持的索引和指标、架构和相关连接方式。\\n\\n"],"next": [],"paragraphTitle": "腾讯云向量数据库是什么?","allParentParagraphTitles": ["腾讯云向量数据库是什么?"]},"documentSet": {"documentSetId": "1387985304602550272","documentSetName": "腾讯云向量数据库.pdf","author": "Tencent","tags": ["向量","Embedding","AI"]}},{"score": 0.8471382260322571,"data": {"text": "## 什么是向量检索?\\n\\n向量检索是将向量与数据库进行比较以查找与查询向量最相似的向量的过程。相似的向量通常具有相近的原始数据,通过向量检索可以挖掘出原始非结构化数据之间的联系。\\n\\n","startPos": 1708,"endPos": 1799,"pre": ["## 什么是AI中的向量表示?\\n\\n当我们处理非结构化数据时,需要将其转换为计算机可以理解和处理的形式。向量表示是一种将非结构化数据转换为嵌入向量的技术,通过多维度向量数值表述某个对象或事物的属性或者特征。腾讯云向量数据库提供的模型能力,目前在开发调试中。具体上线时间,请关注产品动态。\\n\\n"],"next": [],"paragraphTitle": "什么是向量检索?","allParentParagraphTitles": ["什么是向量检索?"]},"documentSet": {"documentSetId": "1387985304602550272","documentSetName": "腾讯云向量数据库.pdf","author": "Tencent","tags": ["向量","Embedding","AI"]}},{"score": 0.846755862236023,"data": {"text": "## 向量数据库\\n\\n## 产品优势\\n\\n最近更新时间:2023-08-2115:36:41\\n\\n腾讯云向量数据库(TencentCloudVectorDB)作为一种专门存储和检索向量数据的服务提供给用户,在高性能、高可用、大规模、低成本、简单易用、稳定可靠等方面体现出显著优势。\\n\\n","startPos": 4991,"endPos": 5130,"pre": ["## 开发者工具\\n\\n\\n\\n腾讯云向量数据库支持丰富的API接口,以促进DevOpS。具体操作,请参见API文档。\\n\\n\\n\\n\\n\\n"],"next": [],"paragraphTitle": "## 向量数据库\\n\\n## 产品优势\\n","allParentParagraphTitles": ["产品优势"]},"documentSet": {"documentSetId": "1387985304602550272","documentSetName": "腾讯云向量数据库.pdf","author": "Tencent","tags": ["向量","Embedding","AI"]}}]
参数名 | 子参数 | 参数含义 |
score | - | 表示查询向量与检索结果向量之间的相似性计算分数。 |
data | text | 检索的结果。 |
| endPos | 检索结果在文件中偏移的结束位置。 |
| startPos | 检索结果在文件中偏移的起始位置。 |
| next | 根据检索时,设置的参数 expand_chunk,返回检索结果向后扩展的段落。 |
| pre | 根据检索时,设置的参数 expand_chunk,返回检索结果向前扩展的段落。 |
| paragraphTitle | 检索到的 chunk 所属的段落标题。 |
| allParentParagraphTitles | 检索到的 chunk 所属的所有层级的段落标题。 |
documentSet | documentSetId | 文件 ID。 |
| documentSetName | 文件名。 |
| other_scalar_field | 自定义的文件 Metadata 信息的标量字段。例如:author、page 等。 说明: 显示创建 CollectionView 时设置为 Filter 索引的字段,同时显示上传文件时或使用 update 新增的字段,但新增的字段不会构建索引。 |