MilvusRM
MilvusRM 默认使用 OpenAI 的 text-embedding-3-small
嵌入,或者任何自定义的嵌入函数。为了支持段落检索,它假定已经创建了一个 Milvus 集合,并填充了以下字段:
text
: 段落的文本
设置 MilvusRM 客户端
构造函数初始化了 MilvusRM
类的一个实例,可以选择使用 OpenAI 的 text-embedding-3-small
嵌入或任何自定义的嵌入 函数。
collection_name (str)
: 要查询的 Milvus 集合的名称。uri (str, optional)
: Milvus 连接 URI。默认为 "http://localhost:19530"token (str, optional)
: Milvus 连接令牌。默认为 None。db_name (str, optional)
: Milvus 数据库名称。默认为 "default"。embedding_function (callable, optional)
: 将文本列表转换为嵌入的函数。 嵌入函数应接受文本字符串列表作为输入,并输出嵌入列表。 默认为 None。默认情况下,它将通过环境变量 OPENAI_API_KEY 获取 OpenAI 客户端,并使用默认维度的 OpenAI 嵌入模型 "text-embedding-3-small"。k (int, optional)
: 要检索的顶部段落数量。默认为 3。
MilvusRM 构造函数示例:
MilvusRM(
collection_name: str,
uri: Optional[str] = "http://localhost:19530",
token: Optional[str] = None,
db_name: Optional[str] = "default",
embedding_function: Optional[Callable] = None,
k: int = 3,
)
内部原理
forward(self, query_or_queries: Union[str, List[str]], k: Optional[int] = None) -> dspy.Prediction
参数:
query_or_queries
(Union[str, List[str]]): 要搜索的查询或查询列表。k
(Optional[int], optional): 要检索的结果数量。如果未指定,默认为初始化期间设置的值。
返回:
dspy.Prediction
: 包含检索到的段落,每个段落表示为具有long_text
属性的dotdict
。
搜索 Milvus 集合,查找与给定查询或查询匹配的前 k
个段落,使用通过默认的 OpenAI 嵌入或指定的 embedding_function
生成的嵌入。
通过 MilvusRM 客户端发送检索请求
from dspy.retrieve.milvus_rm import MilvusRM
import os
os.envrion["OPENAI_API_KEY"] = "<YOUR_OPENAI_API_KEY>"
retriever_model = MilvusRM(
collection_name="<YOUR_COLLECTION_NAME>",
uri="<YOUR_MILVUS_URI>",
token="<YOUR_MILVUS_TOKEN>" # 如果 Milvus 连接不需要令牌,则忽略此项
)
results = retriever_model("探索量子计算的重要性", k=5)
for result in results:
print("文档:", result.long_text, "\n")