精确查询文件

最近更新时间:2024-09-29 15:47:41

我的收藏

功能介绍

query() 用于精确查找与查询条件完全匹配的文件,可获取文件长度、向量化的进度与状态等,不包括文件内容。
public List<DocumentSet> query(CollectionViewQueryParam param)

使用示例

说明:
支持指定具体的文件名查找文件,或搭配文件 Metadata 信息对应字段的 Filter 表达式查询文件信息。
支持指定具体的 DocumentSet ID 查找文件,或搭配文件 Metadata 信息对应字段的 Filter 表达式查询文件信息。
支持指定查询起始位置 offset 和返回数量 limit,查找指定范围的文件信息。
支持根据文件 Metadata 信息对应字段 Filter 表达式,过滤需查找的文件。
使用文件名搭配 Filter 查询文件
使用范围查询文件
使用文件 ID 查询文件
根据存储于向量数据库的文件名,搭配标量字段 author 与 tags 的 Filter 表达式一并过滤文件。
// link database, client 为 VectorDBClient() 创建的客户端对象
AIDatabase db = client.aiDatabase("db-test-ai");
// link collectionView
CollectionView collection = db.describeCollectionView("coll-ai-files");
// 设置查询要求
// Limit 设置每页返回的 DocumentSet 数量,默认值为 10
// Filter 设置 author 与 tags 字段的 Filter 表达式,过滤文件
// DocumentSetNames 指定需要查找的文件名,可批量设置
// OutputFields 配置需输出的字段,不配置则输出所有字段
CollectionViewQueryParam queryParam = CollectionViewQueryParam.newBuilder()
.withLimit(2)
.withFilter(new Filter(Filter.in("author", Arrays.asList("Tencent","tencent"))). and(Filter.include("tags", Arrays.asList("AI","Embedding"))))
.withDocumentSetNames(Arrays.asList("腾讯云向量数据库.md"))
.withOutputFields(Arrays.asList("textPrefix", "author", "tags"))
.build();
// 根据查询要求查找文件
List<DocumentSet> qdos = collection.query(queryParam);
// 输出查询结果
for (DocumentSet doc : qdos) {
System.out.println("\\tres: " + doc.toString());
}
文件上传于向量数据库之后,可以使用 limit offset 参数,设定查询的范围来查询文件信息。
// link database, client 为 VectorDBClient() 创建的客户端对象
AIDatabase db = client.aiDatabase("db-test-ai");
// link collectionView
CollectionView collection = db.describeCollectionView("coll-ai-files");
// 设置查询要求
// Limit 设置每页返回的 DocumentSet 数量,默认值为 10
// Offset 设置分页偏移量,用于控制分页查询返回结果的起始位置
CollectionViewQueryParam queryParam = CollectionViewQueryParam.newBuilder()
.withLimit(2)
.withOffset(0)
.build();
// 根据查询要求查找文件
List<DocumentSet> qdos = collection.query(queryParam);
// 输出查询结果
for (DocumentSet doc : qdos) {
System.out.println("\\tres: " + doc.toString());
}
查询结果,如下所示。
{
'documentSetId': '11800467415********',
'documentSetName': '腾讯云向量数据库.md',
'textPrefix': '本页面旨在通过回答几个问题来让您大致了解腾讯云向量数据库(Tencent Cloud VectorDB)。读完本页后,您将了解腾讯云向量数据库是什么、它是如何工作的、关键概念、为什么使用腾讯云向量数据库、支持的索引和指标、架构和相关连接方式。\\n## 腾讯云向量数据库是什么?\\n腾讯云向量数据库是一款全托管的自研企业级分布式数据库服务,专用于存储、检索、分析多维向量数据。该数据库支持多种索引类型和相似',
'documentSetInfo': {
'textLength': 5526,
'byteLength': 12886,
'indexedProgress': 100,
'indexedStatus': 'Ready',
'createTime': '2023-12-01 15:24:27',
'lastUpdateTime': '2023-12-01 15:24:27',
'keywords': '向量 数据库 数据 腾讯 检索 索引 支持 结构化 进行 相似'
},
'author': 'Tencent',
'tag': [
'向量',
'Embedding',
'AI'
]
}
文件上传于向量数据库之后,系统会自动分配文件 ID,获取文件 ID 信息之后可通过文件 ID 批量查询文件信息。
// link database, client 为 VectorDBClient() 创建的客户端对象
AIDatabase db = client.aiDatabase("db-test-ai");
// link collectionView
CollectionView collection = db.describeCollectionView("coll-ai-files");
// 设置查询要求
// Limit 设置每页返回的 DocumentSet 数量,默认值为 10
// Filter 设置 author 与 tags 字段的 Filter 表达式,过滤文件
// DocumentSetIds 指定需要查找的文件ID,可批量设置
// OutputFields 配置需输出的字段,不配置则输出所有字段
CollectionViewQueryParam queryParam = CollectionViewQueryParam.newBuilder()
.withLimit(2)
.withFilter(new Filter(Filter.in("author", Arrays.asList("Tencent","tencent"))). and(Filter.include("tags", Arrays.asList("AI","Embedding"))))
.witDocumentSetIds(Arrays.asList("11793516237********"))
.withOutputFields(Arrays.asList("textPrefix", "author", "tags"))
.build();
List<DocumentSet> qdos = collection.query(queryParam);
for (DocumentSet doc : qdos) {
System.out.println("\\tres: " + doc.toString());
}

入参描述

子参数
是否必选
配置方法及要求
DocumentSetNames
表示要查询的文档的名称,支持批量查询,数组元素范围[1,20]。
DocumentSetIds
表示要查询的文档的所有 ID,支持批量查询,数组元素范围[1,20]。
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
每页返回的 DocumentSet 数量。
数据类型:uint 64。
默认值:10。
取值范围:[1,16384]。
注意:
若不配置任何查询条件,即 doc_list = coll_view.query(),则默认返回 10 个 DocumentSet。
若查询条件仅配置 Filter 表达式,不配置 limit,则默认返回 10 条 DocumentSet。
若查询条件仅设置 document_set_name document_set_id,则可不配置 limit 参数,默认返回 10 条数据。
Offset
设置分页偏移量,用于控制分页查询返回结果的起始位置,方便用户对数据进行分页展示和浏览。
取值:为 limit 整数倍。
计算公式:offset = limit * (page-1)。
例如:当 limit = 10,page = 2 时,分页偏移量 offset = 10 * (2 - 1) = 10,表示从查询结果的第11条记录开始返回数据。
OutputFields
以数组形式配置需返回的字段。

出参描述

res: {"documentSetId":"1192067560515047424","documentSetName":"腾讯云向量数据库.md","textPrefix":"本页面旨在通过回答几个问题来让您大致了解腾讯云向量数据库(Tencent Cloud VectorDB)。读完本页后,您将了解腾讯云向量数据库是什么、它是如何工作的、关键概念、为什么使用腾讯云向量数据库、支持的索引和指标、架构和相关连接方式。\\n## 腾讯云向量数据库是什么?\\n腾讯云向量数据库是一款全托管的自研企业级分布式数据库服务,专用于存储、检索、分析多维向量数据。该数据库支持多种索引类型和相似","documentSetInfo":"{\\"textLength\\":5526,\\"byteLength\\":12886,\\"indexedProgress\\":100,\\"indexedStatus\\":\\"Ready\\",\\"createTime\\":\\"2024-01-03 19:30:53\\",\\"lastUpdateTime\\":\\"2024-01-03 19:30:59\\",\\"keywords\\":\\"向量 数据库 数据 腾讯 检索 索引 支持 结构化 进行 相似\\"}","splitterPreprocess":"{\\"appendTitleToChunk\\":false,\\"appendKeywordsToChunk\\":true}","author":"Tencent","tags":"[Embedding, 向量, AI]"}
参数名
子参数
参数含义
documnetSetId
-
文件 ID。
documnetSetName
-
文件名。
textPrefix
-
文件内容前 200个字符。
documentSetInfo
textLength
文件的字符数。
byteLength
文件的字节数。
indexedProgress
文件被预处理、Embedding 向量化的进度。
indexedStatus
文件预处理、Embedding 向量化的状态。
New:等待解析。
Loading:文件解析中。
Failure:文件解析、写入出错。
Ready:文件解析、写入完成。
indexedErrorMsg
文件解析、写入错误描述信息。
说明:
IndexedStatus Failure 时,返回 indexedErrorMsg 信息
createTime
文件创建时间。
lastUpdateTime
文件最后更新时间。
keywords
文件关键字。
splitterPreprocess
appendTitleToChunk
在对文件拆分时,配置是否将 Title 追加到切分后的段落后面一并 Embedding。取值如下所示:
false:不追加。
true:将段落 Title 追加到切分后的段落。
appendKeywordsToChunk
在对文件拆分时,配置是否将关键字 keywords 追加到切分后的段落一并 Embedding。取值如下所示:
false:不追加。
true:将全文的 keywords 追加到切分后的段落。
author、tags
-
自定义的文件 Metadata 信息字段。
说明:
显示创建 CollectionView 时设置为 Filter 索引的字段,同时显示上传文件时或使用 pdate 新增的字段,但新增的字段不会构建索引。