类功能
功能描述
提供sqlite知识数据库,主要存储切分后的chunk信息。
函数原型
from mx_rag.storage.document_store import SQLiteDocstore SQLiteDocstore(db_path, encrypt_fn, decrypt_fn)
输入参数说明
参数名 |
数据类型 |
可选/必选 |
说明 |
---|---|---|---|
db_path |
str |
必选 |
关系型数据库存储路径,必须为有效路径,路径的长度最大为1024,文件名长度不能超过200,不能包含"..",存放路径不能在路径列表中:["/etc", "/usr/bin", "/usr/lib", "/usr/lib64", "/sys/", "/dev/", "/sbin"]。 |
encrypt_fn |
Callable |
可选 |
回调方法,对ChunkModel类的chunk内容加密,输出为字符串。add保存时,数据库保存的是chunk字段经过encrypt_fn方法处理后的数据。 须知:
如果上传的文档涉及银行卡号、身份证号、护照号、口令等个人数据,请配置该参数保证个人数据安全。 |
decrypt_fn |
Callable |
可选 |
回调方法,对ChunkModel类的chunk内容解密,输出为字符串。search返回时,返回的是chunk字段经过decrypt_fn方法处理后的数据。 |
调用示例
from mx_rag.storage.document_store import MxDocument, SQLiteDocstore def encrypt_fn(value): # 安全的加密方法 return value def decrypt_fn(value): # 安全的解密方法 return value chunk_store = SQLiteDocstore(db_path="./sql.db", encrypt_fn=encrypt_fn, decrypt_fn=decrypt_fn) text = ["示例", "文本"] metadata = [{} for _ in text] doc = [MxDocument(page_content=t, metadata=m, document_name="1.docx") for t, m in zip(text, metadata)] document_id = 1 chunk_store.add(doc, document_id) idx = chunk_store.get_all_chunk_id() document = chunk_store.search(idx[0]) print(document.page_content) chunk_store.update(idx[:2], ["text1", "text2"]) print(chunk_store.delete(document_id)) chunk_store.search_by_document_id(document_id)
父主题: SQLiteDocstore类