昇腾社区首页
中文
注册

类功能

功能描述

提供基于Milvus的知识数据库,主要存储切分后的chunk信息。

函数原型

from mx_rag.storage.document_store import MilvusDocstore
MilvusDocstore(client, collection_name, enable_bm25, bm25_k1, bm25_b, auto_flush)

输入参数说明

参数名

数据类型

可选/必选

说明

client

MilvusClient

必选

MilvusClient实例,具体说明请参考MilvusClient

说明:

MilvusClient由用户控制传入,请使用安全的连接方式。

collection_name

str

可选

集合名称,不能为空,最大长度为1024,默认为“doc_store”

enable_bm25

bool

可选

是否开启bm25稀疏向量检索,默认为True,如果此参数设置为False,则全文检索功能不可用(full_text_search方法始终返回[ ])

bm25_k1

float

可选

bm25稀疏向量检索时控制词频饱和度。数值越大,术语频率在文档排序中的重要性越高。取值范围[1.2, 2.0], 默认为1.2,具体说明请参考Milvus全文检索相关部分

bm25_b

float

可选

bm25稀疏向量检索时控制文档长度标准化的程度。取值范围[0, 1],默认为0.75。具体说明请参考Milvus全文检索相关部分

auto_flush

bool

可选

数据变更时是否自动刷新内存数据,默认为True。

encrypt_fn

Callable

可选

回调方法,enable_bm25为False时生效,当调用add或update时,使用encrypt_fn方法对文档page_content加密后入库。

须知:

如果上传的文档涉及银行卡号、身份证号、护照号、口令等个人数据,请配置该参数保证个人数据安全。

decrypt_fn

Callable

可选

回调方法,enable_bm25为False时生效,调用查询类接口时对使用decrypt_fn对page_content解密后返回。

调用示例

from pymilvus import MilvusClient
from mx_rag.storage.document_store import MxDocument, MilvusDocstore
client = MilvusClient("https://x.x.x.x:port", user="xxx", password=getpass.getpass(), token="xxx")
chunk_store = MilvusDocstore(client)
text = ["示例", "文本"]
metadata_list = [{} for _ in text]
doc = [MxDocument(page_content=t, metadata=m, document_name="1.docx") for t, m in zip(text, metadata_list)]
document_id = 1
chunk_store.add(doc, document_id)
ids = chunk_store.get_all_chunk_id()
document = chunk_store.search(ids[0])
print(document.page_content)
print(chunk_store.full_text_search("文本", filter_dict={"document_id": [0]}))
print(chunk_store.full_text_search("文本", filter_dict={"document_id": [document_id]}))
chunk_store.update([0, 1], ["text1", "text2"])
print(chunk_store.delete(document_id))
chunk_store.search_by_document_id(document_id)