类功能
功能描述
使用BM25对输入的query进行topk检索,该类继承langchain_core.retrievers.BaseRetriever,通过调用基类的invoke方法使用检索功能,输入的query长度不超过100万。
函数原型
from mx_rag.retrievers.full_text_retriever import FullTextRetriever FullTextRetriever(document_store, k)
输入参数说明
参数名 |
数据类型 |
可选/必选 |
说明 |
|---|---|---|---|
document_store |
MilvusDocstore类 或OpenGaussDocstore类 |
必选 |
存储待检索文本语料的关系数据库实例,当前只支持MilvusDocstore和OpenGaussDocstore两种 |
k |
int |
可选 |
检索返回的top k个MxDocument的数目,取值范围:[1,10000],默认值为“1”。 |
filter_dict |
Dict |
可选 |
默认为{},由检索条件组成的字典,当前只支持对document_id进行过滤,过滤的文档id以列表形式传入,id列表长度不超过1000*1000。例如,需要在document_id为1,2,4这几篇文档中过滤,则传入的字典为{"document_id": [1, 2, 4]}。 |
调用示例
import getpass
from pymilvus import MilvusClient
from langchain_text_splitters import RecursiveCharacterTextSplitter
from mx_rag.document.loader import DocxLoader
from mx_rag.storage.document_store import MxDocument, MilvusDocstore
from mx_rag.retrievers import FullTextRetriever
client = MilvusClient("https://x.x.x.x:port", user="xxx", password=getpass.getpass(), secure=True, client_pem_path="path_to/client.pem", client_key_path="path_to/client.key", ca_pem_path="path_to/ca.pem", server_name="localhost")
chunk_store = MilvusDocstore(client)
docs = DocxLoader("test.docx").load_and_split(
RecursiveCharacterTextSplitter(chunk_size=750, chunk_overlap=100))
mxdocs = [MxDocument(page_content=doc.page_content, metadata=doc.metadata, document_name="text.docx") for doc in docs]
chunk_store.add(mxdocs, 1)
full_retrive = FullTextRetriever(document_store=chunk_store, k=3)
print(full_retrive.invoke("爪哇岛"))
父主题: FullTextRetriever