向量检索
更新时间:2025-04-10
什么是向量检索
向量数据库是一种专门用于存储和检索高维向量数据的数据库,常用于支持语义搜索、推荐系统、图像识别等应用。其核心能力是向量检索(Vector Search),即通过计算向量之间的相似度(如余弦相似度、欧氏距离等),快速找出与查询向量最相似的数据项。这种方式不同于传统基于关键词的检索,能够更好地捕捉语义层面的相似性。
在实际应用中,向量检索不仅可以单独进行,还可以与Filter(过滤器)条件结合使用,以提高检索的准确性和效率。通过预先使用结构化字段(如标签、类别、时间戳等)进行过滤,系统可以在更小的候选集合中执行向量相似度计算,从而显著减少计算开销,加快响应速度。这种“先过滤、后向量比对”的方式,尤其适用于多租户环境、权限控制或需要按业务字段筛选的场景,是构建高效、可控语义搜索系统的重要策略。
什么是Filter过滤条件
VectorDB支持通过表达式形式指定一个过滤条件作为检索参数,来约束向量检索的候选数据范围,这就是我们常说的带标量过滤的向量检索。本文介绍一下此类检索场景的应进行一些说明介绍。其中Filter过滤条件表达式的语法可以参见Filter过滤条件表达式语法说明。
带Filter过滤条件的向量检索示例
我们通过Python SDK来展示一系列带Filter过滤条件表达式的向量检索的使用方法。
- 创建一个莫愁客户端对象。
Python
1import time
2import json
3import random
4
5import pymochow
6import logging
7from pymochow.configuration import Configuration
8from pymochow.auth.bce_credentials import BceCredentials
9from pymochow.exception import ClientError, ServerError
10from pymochow.model.schema import Schema, Field, SecondaryIndex, VectorIndex, HNSWParams
11from pymochow.model.enum import FieldType, IndexType, MetricType, ServerErrCode
12from pymochow.model.enum import TableState, IndexState
13from pymochow.model.table import Partition, Row, AnnSearch, HNSWSearchParams
14
15logging.basicConfig(filename='documentinsight.log', level=logging.DEBUG,
16 format='%(asctime)s - %(name)s - %(levelname)s - %(message)s')
17logger = logging.getLogger(__name__)
18
19if __name__ == "__main__":
20 account = '$您的账户名称'
21 api_key = '$您的账户API密钥'
22 endpoint = '$您的实例访问端点' # 例如:'http://127.0.0.1:5287'
23
24 db_name = 'DocumentInsight'
25 table_name = 'FilterSearchTable'
26
27 # 根据配置创建一个MochowClient对象
28 config = Configuration(credentials=BceCredentials(account, api_key), endpoint=endpoint)
29 mochow_client = pymochow.MochowClient(config)
- 建库建表,建立一个有着各种不同类型字段的表。
Python
1 # 建库
2 db = mochow_client.create_database(db_name);
3 # 若库已存在,则直接使用下述代码获取一个库对象
4 # db = mochow_client.database(db_name)
5
6 # 建表,该表有2个分区
7 fields = []
8 fields.append(Field("DocId", FieldType.UINT64, primary_key=True, partition_key=True, not_null=True))
9 fields.append(Field("Title", FieldType.STRING, not_null=True))
10 fields.append(Field("Author", FieldType.STRING, not_null=True))
11 fields.append(Field("Extension", FieldType.STRING, not_null=True))
12 fields.append(Field("SizeInBytes", FieldType.UINT64, not_null=True))
13 fields.append(Field("LastEditTime", FieldType.DATETIME, not_null=True))
14 fields.append(Field("Published", FieldType.BOOL, not_null=True))
15 fields.append(Field("Vector", FieldType.FLOAT_VECTOR, dimension=2, not_null=True))
16 indexes = []
17 indexes.append(VectorIndex(index_name="Vector_Idx", index_type=IndexType.HNSW,
18 field="Vector", metric_type=MetricType.L2,
19 params=HNSWParams(m=32, efconstruction=200)))
20 table = db.create_table(
21 table_name=table_name,
22 replication=1,
23 partition=Partition(partition_num=2), # 2个分区
24 schema=Schema(fields=fields, indexes=indexes)
25 )
26 while True:
27 time.sleep(1)
28 table = db.describe_table(table_name)
29 if table.state == TableState.NORMAL:
30 break
- 插入数条记录,仔细设计这些记录的各个字段的取值,便于我们后续展示各种带Filter条件表达式的查询。
Python
1 # 插入数条数据,为了方便展示带过滤检索的用法,我们让这些数据具备非常接近的向量
2 rows = [
3 Row(DocId=1, Title="LLM技术详解", Author='Alice', Extension='pdf', SizeInBytes=100000,
4 LastEditTime="2024-01-28T12:55:28Z", Published=True, Vector=[0.111111, 0.222222]),
5 Row(DocId=2, Title="深入浅出大语言模型技术", Author='Bob', Extension='pdf', SizeInBytes=110000,
6 LastEditTime="2024-02-29T18:00:00Z", Published=True, Vector=[0.1111112, 0.222222]),
7 Row(DocId=3, Title="基于大模型的RAG应用开发实践", Author='Bob', Extension='docx', SizeInBytes=120000,
8 LastEditTime="2023-11-09T11:00:00Z", Published=True, Vector=[0.111113, 0.222222]),
9 Row(DocId=4, Title="揭秘AI原生应用开发——原理与实战", Author='Curry', Extension='docx', SizeInBytes=120000,
10 LastEditTime="2023-12-12T09:40:30Z", Published=False, Vector=[0.111114, 0.222222]),
11 Row(DocId=5, Title="向量数据库在RAG开发中的应用与实践", Author='Curry', Extension='pptx', SizeInBytes=90000,
12 LastEditTime="2024-02-29T18:00:00Z", Published=False, Vector=[0.111115, 0.222222])
13 ]
14 table.insert(rows=rows)
- 构建向量索引。
Python
1 # 构建向量索引
2 index_name = "Vector_Idx"
3 table.rebuild_index(index_name)
4 while True:
5 time.sleep(1)
6 index = table.describe_index(index_name)
7 if index.state == IndexState.NORMAL:
8 break
- 执行各类带Filter过滤条件表达式的向量检索,在所有检索示例中,我们都检索非常接近上述数据向量值的同一个向量值。
- Filter为单一表达式
Python
1 vectorFloats = [0.1, 0.2]
2
3 # 仅在“Author为Bob”的数据记录中进行检索
4 anns = AnnSearch(vector_field="Vector", vector_floats=vectorFloats,
5 filter="Author == 'Bob'",
6 params=HNSWSearchParams(ef=200, limit=10))
7 result = table.search(anns=anns, retrieve_vector=True)
8 print("Search result with filter \"Author == 'Bob'\": {}\n".format(result))
9
10 # 仅在“Published为True”的数据记录中进行检索
11 anns = AnnSearch(vector_field="Vector", vector_floats=vectorFloats,
12 filter="Published = 'true'",
13 params=HNSWSearchParams(ef=200, limit=10))
14 result = table.search(anns=anns, retrieve_vector=True)
15 print("Search result with filter \"Published = 'true'\": {}\n".format(result))
16
17 # 仅在“DocID大于等于3”的数据记录中进行检索
18 anns = AnnSearch(vector_field="Vector", vector_floats=vectorFloats,
19 filter="DocId >= 3",
20 params=HNSWSearchParams(ef=200, limit=10))
21 result = table.search(anns=anns, retrieve_vector=True)
22 print("Search result with filter \"DocId >= 3\": {}\n".format(result))
23
24 # 仅在“LastEditTime小于UTC时间2024年1月1日0点0分0秒(即为2024年之前)”的数据记录中进行检索
25 anns = AnnSearch(vector_field="Vector", vector_floats=vectorFloats,
26 filter="LastEditTime < '2024-01-01T00:00:00Z'",
27 params=HNSWSearchParams(ef=200, limit=10))
28 result = table.search(anns=anns, retrieve_vector=True)
29 print("Search result with filter \"LastEditTime < '2024-01-01T00:00:00Z'\": {}\n".format(result))
30
31 # 仅在“Extension不是pptx”的数据记录中进行检索
32 anns = AnnSearch(vector_field="Vector", vector_floats=vectorFloats,
33 filter="Extension != 'pptx'",
34 params=HNSWSearchParams(ef=200, limit=10))
35 result = table.search(anns=anns, retrieve_vector=True)
36 print("Search result with filter \"Extension != 'pptx'\": {}\n".format(result))
37
38 # 仅在“Extension是pptx这个条件为假”的数据记录中进行检索,该条件等价于上一个条件,即“Extension不是pptx”
39 anns = AnnSearch(vector_field="Vector", vector_floats=vectorFloats,
40 filter="NOT Extension == 'pptx'",
41 params=HNSWSearchParams(ef=200, limit=10))
42 result = table.search(anns=anns, retrieve_vector=True)
43 print("Search result with filter \"NOT Extension == 'pptx'\": {}\n".format(result))
- Filter为简单组合表达式
Python
1 vectorFloats = [0.1, 0.2]
2
3 # 仅在“Author为Curry 且 LastEditTime大于UTC时间2024年1月1日0点0分0秒(即为2024年)”的数据记录中进行检索
4 anns = AnnSearch(vector_field="Vector", vector_floats=vectorFloats,
5 filter="Author == 'Curry' AND LastEditTime > '2024-01-01T00:00:00Z'",
6 params=HNSWSearchParams(ef=200, limit=10))
7 result = table.search(anns=anns, retrieve_vector=True)
8 print("Search result with filter \"Author == 'Curry' AND LastEditTime > '2024-01-01T00:00:00Z'\": {}\n".format(result))
9
10 # 仅在“Extension为pdf 或 SizeInBytes等于120000”的数据记录中进行检索
11 anns = AnnSearch(vector_field="Vector", vector_floats=vectorFloats,
12 filter="Extension == 'pdf' OR SizeInBytes == 120000",
13 params=HNSWSearchParams(ef=200, limit=10))
14 result = table.search(anns=anns, retrieve_vector=True)
15 print("Search result with filter \"Extension == 'pdf' OR SizeInBytes == 120000\": {}\n".format(result))
16
17 # 仅在“Extension为docx 或 Extension为pptx”的数据记录中进行检索
18 anns = AnnSearch(vector_field="Vector", vector_floats=vectorFloats,
19 filter="Extension == 'docx' OR Extension = 'pptx'",
20 params=HNSWSearchParams(ef=200, limit=10))
21 result = table.search(anns=anns, retrieve_vector=True)
22 print("Search result with filter \"Extension == 'docx' OR Extension = 'pptx'\": {}\n".format(result))
- Filter为复杂组合表达式
Python
1 vectorFloats = [0.1, 0.2]
2
3 # 仅在“Extension为pdf或docx,并且Author为Curry”的数据记录中进行检索
4 anns = AnnSearch(vector_field="Vector", vector_floats=vectorFloats,
5 filter="(Extension == 'pdf' OR Extension = 'docx') AND Author == 'Curry'",
6 params=HNSWSearchParams(ef=200, limit=10))
7 result = table.search(anns=anns, retrieve_vector=True)
8 print("Search result with filter \"(Extension == 'pdf' OR Extension = 'docx') AND Author == 'Curry'\": {}\n".format(result))
9
10 # Filter条件过于复杂,此处不在用中文进行描述
11 anns = AnnSearch(vector_field="Vector", vector_floats=vectorFloats,
12 filter="((Extension == 'pdf' OR LastEditTime < '2024-01-01T00:00:00Z') AND Author == 'Curry') OR Title == 'LLM技术详解'",
13 params=HNSWSearchParams(ef=200, limit=10))
14 result = table.search(anns=anns, retrieve_vector=True)
15 print("Search result with filter \"((Extension == 'pdf' OR LastEditTime < '2024-01-01T00:00:00Z') AND Author == 'Curry') OR Title == 'LLM技术详解'\": {}\n".format(result))
- 上述所有检索请求的全部输出结果,如下所示:
Shell
1Search result with filter "Author == 'Bob'": {metadata:{content__length:u'644',content__type:u'application/json',request_id:u'b2b91133-13a4-4ce6-8533-0a73e9f8f782'},rows:[{'row': {'DocId': 2, 'Vector': [0.11111120134592056, 0.2222220003604889], 'Title': '深入浅出大语言模型技术', 'Author': 'Bob', 'Extension': 'pdf', 'SizeInBytes': 110000, 'LastEditTime': '2024-02-29T18:00:00Z', 'Published': True}, 'distance': 0.0006172759458422661, 'score': 1.0}, {'row': {'DocId': 3, 'Vector': [0.11111299693584442, 0.2222220003604889], 'Title': '基于大模型的RAG应用开发实践', 'Author': 'Bob', 'Extension': 'docx', 'SizeInBytes': 120000, 'LastEditTime': '2023-11-09T11:00:00Z', 'Published': True}, 'distance': 0.0006173158180899918, 'score': 1.0}],code:0,msg:u'Success'}
2
3Search result with filter "Published = 'true'": {metadata:{content__length:u'929',content__type:u'application/json',request_id:u'accff13e-c19b-4356-9181-da6fac2bdebb'},rows:[{'row': {'DocId': 1, 'Vector': [0.11111100018024445, 0.2222220003604889], 'Title': 'LLM技术详解', 'Author': 'Alice', 'Extension': 'pdf', 'SizeInBytes': 100000, 'LastEditTime': '2024-01-28T12:55:28Z', 'Published': True}, 'distance': 0.0006172714056447148, 'score': 1.0}, {'row': {'DocId': 2, 'Vector': [0.11111120134592056, 0.2222220003604889], 'Title': '深入浅出大语言模型技术', 'Author': 'Bob', 'Extension': 'pdf', 'SizeInBytes': 110000, 'LastEditTime': '2024-02-29T18:00:00Z', 'Published': True}, 'distance': 0.0006172759458422661, 'score': 1.0}, {'row': {'DocId': 3, 'Vector': [0.11111299693584442, 0.2222220003604889], 'Title': '基于大模型的RAG应用开发实践', 'Author': 'Bob', 'Extension': 'docx', 'SizeInBytes': 120000, 'LastEditTime': '2023-11-09T11:00:00Z', 'Published': True}, 'distance': 0.0006173158180899918, 'score': 1.0}],code:0,msg:u'Success'}
4
5Search result with filter "DocId >= 3": {metadata:{content__length:u'977',content__type:u'application/json',request_id:u'c3a6fb0b-3ea2-4bb3-8897-654541eb91bf'},rows:[{'row': {'DocId': 3, 'Vector': [0.11111299693584442, 0.2222220003604889], 'Title': '基于大模型的RAG应用开发实践', 'Author': 'Bob', 'Extension': 'docx', 'SizeInBytes': 120000, 'LastEditTime': '2023-11-09T11:00:00Z', 'Published': True}, 'distance': 0.0006173158180899918, 'score': 1.0}, {'row': {'DocId': 4, 'Vector': [0.111114002764225, 0.2222220003604889], 'Title': '揭秘AI原生应用开发——原理与实战', 'Author': 'Curry', 'Extension': 'docx', 'SizeInBytes': 120000, 'LastEditTime': '2023-12-12T09:40:30Z', 'Published': False}, 'distance': 0.0006173381698317826, 'score': 1.0}, {'row': {'DocId': 5, 'Vector': [0.111115001142025, 0.2222220003604889], 'Title': '向量数据库在RAG开发中的应用与实践', 'Author': 'Curry', 'Extension': 'pptx', 'SizeInBytes': 90000, 'LastEditTime': '2024-02-29T18:00:00Z', 'Published': False}, 'distance': 0.0006173603469505906, 'score': 1.0}],code:0,msg:u'Success'}
6
7Search result with filter "LastEditTime < '2024-01-01T00:00:00Z'": {metadata:{content__length:u'660',content__type:u'application/json',request_id:u'bc716bae-6b70-4faf-b1ba-d434ff2c85dd'},rows:[{'row': {'DocId': 3, 'Vector': [0.11111299693584442, 0.2222220003604889], 'Title': '基于大模型的RAG应用开发实践', 'Author': 'Bob', 'Extension': 'docx', 'SizeInBytes': 120000, 'LastEditTime': '2023-11-09T11:00:00Z', 'Published': True}, 'distance': 0.0006173158180899918, 'score': 1.0}, {'row': {'DocId': 4, 'Vector': [0.111114002764225, 0.2222220003604889], 'Title': '揭秘AI原生应用开发——原理与实战', 'Author': 'Curry', 'Extension': 'docx', 'SizeInBytes': 120000, 'LastEditTime': '2023-12-12T09:40:30Z', 'Published': False}, 'distance': 0.0006173381698317826, 'score': 1.0}],code:0,msg:u'Success'}
8
9Search result with filter "Extension != 'pptx'": {metadata:{content__length:u'1246',content__type:u'application/json',request_id:u'282f60ff-6f4c-4b5e-b533-f3aadb518c02'},rows:[{'row': {'DocId': 1, 'Vector': [0.11111100018024445, 0.2222220003604889], 'Title': 'LLM技术详解', 'Author': 'Alice', 'Extension': 'pdf', 'SizeInBytes': 100000, 'LastEditTime': '2024-01-28T12:55:28Z', 'Published': True}, 'distance': 0.0006172714056447148, 'score': 1.0}, {'row': {'DocId': 2, 'Vector': [0.11111120134592056, 0.2222220003604889], 'Title': '深入浅出大语言模型技术', 'Author': 'Bob', 'Extension': 'pdf', 'SizeInBytes': 110000, 'LastEditTime': '2024-02-29T18:00:00Z', 'Published': True}, 'distance': 0.0006172759458422661, 'score': 1.0}, {'row': {'DocId': 3, 'Vector': [0.11111299693584442, 0.2222220003604889], 'Title': '基于大模型的RAG应用开发实践', 'Author': 'Bob', 'Extension': 'docx', 'SizeInBytes': 120000, 'LastEditTime': '2023-11-09T11:00:00Z', 'Published': True}, 'distance': 0.0006173158180899918, 'score': 1.0}, {'row': {'DocId': 4, 'Vector': [0.111114002764225, 0.2222220003604889], 'Title': '揭秘AI原生应用开发——原理与实战', 'Author': 'Curry', 'Extension': 'docx', 'SizeInBytes': 120000, 'LastEditTime': '2023-12-12T09:40:30Z', 'Published': False}, 'distance': 0.0006173381698317826, 'score': 1.0}],code:0,msg:u'Success'}
10
11Search result with filter "NOT Extension == 'pptx'": {metadata:{content__length:u'1246',content__type:u'application/json',request_id:u'8ac05714-af05-4d53-9c25-740e3acf73b8'},rows:[{'row': {'DocId': 1, 'Vector': [0.11111100018024445, 0.2222220003604889], 'Title': 'LLM技术详解', 'Author': 'Alice', 'Extension': 'pdf', 'SizeInBytes': 100000, 'LastEditTime': '2024-01-28T12:55:28Z', 'Published': True}, 'distance': 0.0006172714056447148, 'score': 1.0}, {'row': {'DocId': 2, 'Vector': [0.11111120134592056, 0.2222220003604889], 'Title': '深入浅出大语言模型技术', 'Author': 'Bob', 'Extension': 'pdf', 'SizeInBytes': 110000, 'LastEditTime': '2024-02-29T18:00:00Z', 'Published': True}, 'distance': 0.0006172759458422661, 'score': 1.0}, {'row': {'DocId': 3, 'Vector': [0.11111299693584442, 0.2222220003604889], 'Title': '基于大模型的RAG应用开发实践', 'Author': 'Bob', 'Extension': 'docx', 'SizeInBytes': 120000, 'LastEditTime': '2023-11-09T11:00:00Z', 'Published': True}, 'distance': 0.0006173158180899918, 'score': 1.0}, {'row': {'DocId': 4, 'Vector': [0.111114002764225, 0.2222220003604889], 'Title': '揭秘AI原生应用开发——原理与实战', 'Author': 'Curry', 'Extension': 'docx', 'SizeInBytes': 120000, 'LastEditTime': '2023-12-12T09:40:30Z', 'Published': False}, 'distance': 0.0006173381698317826, 'score': 1.0}],code:0,msg:u'Success'}
12
13Search result with filter "Author == 'Curry' AND LastEditTime > '2024-01-01T00:00:00Z'": {metadata:{content__length:u'352',content__type:u'application/json',request_id:u'c05d60b4-12a3-449a-962a-db545794c67f'},rows:[{'row': {'DocId': 5, 'Vector': [0.111115001142025, 0.2222220003604889], 'Title': '向量数据库在RAG开发中的应用与实践', 'Author': 'Curry', 'Extension': 'pptx', 'SizeInBytes': 90000, 'LastEditTime': '2024-02-29T18:00:00Z', 'Published': False}, 'distance': 0.0006173603469505906, 'score': 1.0}],code:0,msg:u'Success'}
14
15Search result with filter "Extension == 'pdf' OR SizeInBytes == 120000": {metadata:{content__length:u'1246',content__type:u'application/json',request_id:u'0a360057-da65-4a05-957d-c486bc2f97f6'},rows:[{'row': {'DocId': 1, 'Vector': [0.11111100018024445, 0.2222220003604889], 'Title': 'LLM技术详解', 'Author': 'Alice', 'Extension': 'pdf', 'SizeInBytes': 100000, 'LastEditTime': '2024-01-28T12:55:28Z', 'Published': True}, 'distance': 0.0006172714056447148, 'score': 1.0}, {'row': {'DocId': 2, 'Vector': [0.11111120134592056, 0.2222220003604889], 'Title': '深入浅出大语言模型技术', 'Author': 'Bob', 'Extension': 'pdf', 'SizeInBytes': 110000, 'LastEditTime': '2024-02-29T18:00:00Z', 'Published': True}, 'distance': 0.0006172759458422661, 'score': 1.0}, {'row': {'DocId': 3, 'Vector': [0.11111299693584442, 0.2222220003604889], 'Title': '基于大模型的RAG应用开发实践', 'Author': 'Bob', 'Extension': 'docx', 'SizeInBytes': 120000, 'LastEditTime': '2023-11-09T11:00:00Z', 'Published': True}, 'distance': 0.0006173158180899918, 'score': 1.0}, {'row': {'DocId': 4, 'Vector': [0.111114002764225, 0.2222220003604889], 'Title': '揭秘AI原生应用开发——原理与实战', 'Author': 'Curry', 'Extension': 'docx', 'SizeInBytes': 120000, 'LastEditTime': '2023-12-12T09:40:30Z', 'Published': False}, 'distance': 0.0006173381698317826, 'score': 1.0}],code:0,msg:u'Success'}
16
17Search result with filter "Extension == 'docx' OR Extension = 'pptx'": {metadata:{content__length:u'977',content__type:u'application/json',request_id:u'e3111372-ffb7-4f74-af59-ce961fc3ff90'},rows:[{'row': {'DocId': 3, 'Vector': [0.11111299693584442, 0.2222220003604889], 'Title': '基于大模型的RAG应用开发实践', 'Author': 'Bob', 'Extension': 'docx', 'SizeInBytes': 120000, 'LastEditTime': '2023-11-09T11:00:00Z', 'Published': True}, 'distance': 0.0006173158180899918, 'score': 1.0}, {'row': {'DocId': 4, 'Vector': [0.111114002764225, 0.2222220003604889], 'Title': '揭秘AI原生应用开发——原理与实战', 'Author': 'Curry', 'Extension': 'docx', 'SizeInBytes': 120000, 'LastEditTime': '2023-12-12T09:40:30Z', 'Published': False}, 'distance': 0.0006173381698317826, 'score': 1.0}, {'row': {'DocId': 5, 'Vector': [0.111115001142025, 0.2222220003604889], 'Title': '向量数据库在RAG开发中的应用与实践', 'Author': 'Curry', 'Extension': 'pptx', 'SizeInBytes': 90000, 'LastEditTime': '2024-02-29T18:00:00Z', 'Published': False}, 'distance': 0.0006173603469505906, 'score': 1.0}],code:0,msg:u'Success'}
18
19Search result with filter "(Extension == 'pdf' OR Extension = 'docx') AND Author == 'Curry'": {metadata:{content__length:u'352',content__type:u'application/json',request_id:u'2604c2af-83a6-43f1-9c4a-9e843d69a544'},rows:[{'row': {'DocId': 4, 'Vector': [0.111114002764225, 0.2222220003604889], 'Title': '揭秘AI原生应用开发——原理与实战', 'Author': 'Curry', 'Extension': 'docx', 'SizeInBytes': 120000, 'LastEditTime': '2023-12-12T09:40:30Z', 'Published': False}, 'distance': 0.0006173381698317826, 'score': 1.0}],code:0,msg:u'Success'}
20
21Search result with filter "((Extension == 'pdf' OR LastEditTime < '2024-01-01T00:00:00Z') AND Author == 'Curry') OR Title == 'LLM技术详解'": {metadata:{content__length:u'637',content__type:u'application/json',request_id:u'5f0ae352-5c44-4193-a74d-ef2494a76038'},rows:[{'row': {'DocId': 1, 'Vector': [0.11111100018024445, 0.2222220003604889], 'Title': 'LLM技术详解', 'Author': 'Alice', 'Extension': 'pdf', 'SizeInBytes': 100000, 'LastEditTime': '2024-01-28T12:55:28Z', 'Published': True}, 'distance': 0.0006172714056447148, 'score': 1.0}, {'row': {'DocId': 4, 'Vector': [0.111114002764225, 0.2222220003604889], 'Title': '揭秘AI原生应用开发——原理与实战', 'Author': 'Curry', 'Extension': 'docx', 'SizeInBytes': 120000, 'LastEditTime': '2023-12-12T09:40:30Z', 'Published': False}, 'distance': 0.0006173381698317826, 'score': 1.0}],code:0,msg:u'Success'}