昇腾社区首页
中文
注册

类功能

功能描述

使用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”

调用示例

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(), token="xxx")
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("爪哇岛"))