camel.retrievers 包#
子模块#
camel.retrievers.auto_retriever 模块#
- class camel.retrievers.auto_retriever.AutoRetriever(url_and_api_key: Tuple[str, str] | None = None, vector_storage_local_path: str | None = None, storage_type: StorageType | None = None, embedding_model: BaseEmbedding | None = None)[来源]#
基类:
object通过使用基于查询的方法和预定义元素,促进信息的自动检索。
- url_and_api_key#
用于远程访问向量存储的URL和API密钥。
- Type:
可选[元组[str, str]]
- vector_storage_local_path#
向量存储的本地路径(如适用)。
- Type:
可选[str]
- storage_type#
要使用的向量存储类型。默认为StorageType.QDRANT。
- Type:
可选[StorageType]
- embedding_model#
用于嵌入查询和文档的模型。默认为OpenAIEmbedding()。
- Type:
可选[BaseEmbedding]
- run_vector_retriever(query: str, contents: str | List[str] | Element | List[Element], top_k: int = 1, similarity_threshold: float = 0.7, return_detailed_info: bool = False, max_characters: int = 500) dict[str, Sequence[Collection[str]]][来源]#
使用向量存储执行自动向量检索器过程。
- Parameters:
query (str) – 信息检索器的查询字符串。
contents (Union[str, List[str], Element, List[Element]]) – 本地文件路径、远程URL、字符串内容或Element对象。
top_k (int, optional) – 在检索过程中返回的顶部结果数量。必须为正整数。默认为DEFAULT_TOP_K_RESULTS。
similarity_threshold (float, optional) – 用于过滤结果的相似度阈值。默认为 DEFAULT_SIMILARITY_THRESHOLD。
return_detailed_info (bool, optional) – 是否返回详细信息,包括相似度分数、内容路径和元数据。默认为False。
max_characters (int) – 每个分块中的最大字符数。 默认为 500。
- Returns:
- 默认情况下返回
仅文本信息。如果return_detailed_info参数为 True,则返回详细信息包括相似度 分数、内容路径和元数据。
- Return type:
dict[str, Sequence[Collection[str]]]
- Raises:
ValueError - 如果向量路径中存在具有内容名称的向量存储但有效载荷为None。如果contents为空。
RuntimeError – 如果在检索过程中发生任何错误。
camel.retrievers.base 模块#
- class camel.retrievers.base.BaseRetriever[来源]#
基类:
ABC用于实现各类信息检索器的抽象基类。
- process(*input: Any) None#
定义每次调用时执行的进程行为。
- Processes content from a file or URL, divides it into chunks by
使用Unstructured IO,然后内部存储。在使用检索器执行查询之前必须调用此方法。
所有子类都应覆盖此方法。
注意
虽然前向传递的配方需要在此函数内定义,但之后应该调用
BaseRetriever实例而非此函数,因为前者会负责运行已注册的钩子,而后者会静默忽略它们。
- query(*input: Any) None#
定义每次调用时执行的查询行为。
- Query the results. Subclasses should implement this
根据其特定需求选择方法。
所有子类都应覆盖此方法。
注意
虽然前向传递的配方需要在此函数内定义,但之后应该调用
BaseRetriever实例而非此函数,因为前者会负责运行已注册的钩子,而后者会静默忽略它们。
camel.retrievers.bm25_retriever 模块#
- class camel.retrievers.bm25_retriever.BM25Retriever[来源]#
基础类:
BaseRetriever一个使用BM25模型实现的BaseRetriever。
该类通过基于查询的方法促进相关信息的检索,它根据查询词的出现情况和频率对文档进行排序。
- bm25#
用于计算文档分数的BM25Okapi类实例。
- Type:
BM25Okapi
- content_input_path#
已处理和存储内容的路径。
- Type:
字符串
- unstructured_modules#
一个用于解析文件和URL并根据指定参数分块内容的模块。
- Type:
参考文献
camel.retrievers.cohere_rerank_retriever 模块#
- class camel.retrievers.cohere_rerank_retriever.CohereRerankRetriever(model_name: str = 'rerank-multilingual-v2.0', api_key: str | None = None)[来源]#
基础类:
BaseRetriever一个使用Cohere Re-ranking模型实现的BaseRetriever。
- model_name#
用于重新排序的模型名称。
- Type:
字符串
- api_key#
用于与Cohere服务进行身份验证的API密钥。
- Type:
可选[str]
参考文献
https://txt.cohere.com/rerank/
- query(query: str, retrieved_result: List[Dict[str, Any]], top_k: int = 1) List[Dict[str, Any]][来源]#
使用Cohere重新排序模型查询并编译结果。
- Parameters:
query (str) – 信息检索器的查询字符串。
retrieved_result (List[Dict[str, Any]]) – 需要重新排序的内容,应该是来自BaseRetriever如VectorRetriever的输出。
top_k (int, optional) – 检索时返回的顶部结果数量。必须为正整数。默认为DEFAULT_TOP_K_RESULTS。
- Returns:
查询结果的连接列表。
- Return type:
List[Dict[str, Any]]
camel.retrievers.vector_retriever 模块#
- class camel.retrievers.vector_retriever.VectorRetriever(embedding_model: BaseEmbedding | None = None, storage: BaseVectorStorage | None = None)[来源]#
基础类:
BaseRetriever一个通过使用向量存储和嵌入模型实现的BaseRetriever。
该类通过基于查询的方法,利用向量嵌入作为支持,便于检索相关信息。
- embedding_model#
用于生成向量嵌入的嵌入模型。
- Type:
- storage#
要查询的向量存储。
- Type:
- unstructured_modules#
一个用于解析文件和URL并根据指定参数分块内容的模块。
- Type:
- process(content: str | Element | IO[bytes], chunk_type: str = 'chunk_by_title', max_characters: int = 500, embed_batch: int = 50, should_chunk: bool = True, extra_info: dict | None = None, metadata_filename: str | None = None, chunker: BaseChunker | None = None, **kwargs: Any) None[来源]#
处理来自本地文件路径、远程URL、字符串内容、Element对象或二进制文件对象的内容,使用Unstructured IO将其分割成块,并将它们的嵌入存储在指定的向量存储中。
- Parameters:
content (Union[str, Element, IO[bytes]]) - 本地文件路径、远程URL、字符串内容、Element对象或二进制文件对象。
chunk_type (str) – 将要应用的块类型。默认为"chunk_by_title"。
max_characters (int) - 每个分块中的最大字符数。默认为500。
embed_batch (int) – 嵌入处理的批次大小。默认为 50。
should_chunk (bool) - 如果为True,则将内容分割成块,否则跳过分块处理。默认为True。
extra_info (Optional[dict]) - 要添加到payload中的额外信息。默认为None。
metadata_filename (Optional[str]) - 用于存储元数据的元数据文件名。默认为None。
**kwargs (Any) – 用于内容解析的额外关键字参数。
- query(query: str, top_k: int = 1, similarity_threshold: float = 0.7) List[Dict[str, Any]][来源]#
在向量存储中执行查询并将检索到的结果编译成字典。
- Parameters:
query (str) – 信息检索器的查询字符串。
similarity_threshold (float, optional) – 用于过滤结果的相似度阈值。默认为 DEFAULT_SIMILARITY_THRESHOLD。
top_k (int, optional) – 检索时返回的顶部结果数量。必须为正整数。默认为DEFAULT_TOP_K_RESULTS。
- Returns:
查询结果的连接列表。
- Return type:
List[Dict[str, Any]]
- Raises:
ValueError – 如果 'top_k' 小于或等于 0,如果向量存储为空,如果向量存储的 payload 为 None。
模块内容#
- class camel.retrievers.AutoRetriever(url_and_api_key: Tuple[str, str] | None = None, vector_storage_local_path: str | None = None, storage_type: StorageType | None = None, embedding_model: BaseEmbedding | None = None)[来源]#
基类:
object通过使用基于查询的方法和预定义元素,促进信息的自动检索。
- url_and_api_key#
用于远程访问向量存储的URL和API密钥。
- Type:
可选[元组[str, str]]
- vector_storage_local_path#
向量存储的本地路径(如适用)。
- Type:
可选[str]
- storage_type#
要使用的向量存储类型。默认为StorageType.QDRANT。
- Type:
可选[StorageType]
- embedding_model#
用于嵌入查询和文档的模型。默认为OpenAIEmbedding()。
- Type:
可选[BaseEmbedding]
- run_vector_retriever(query: str, contents: str | List[str] | Element | List[Element], top_k: int = 1, similarity_threshold: float = 0.7, return_detailed_info: bool = False, max_characters: int = 500) dict[str, Sequence[Collection[str]]][来源]#
使用向量存储执行自动向量检索器过程。
- Parameters:
query (str) – 信息检索器的查询字符串。
contents (Union[str, List[str], Element, List[Element]]) – 本地文件路径、远程URL、字符串内容或Element对象。
top_k (int, optional) – 在检索过程中返回的顶部结果数量。必须为正整数。默认为DEFAULT_TOP_K_RESULTS。
similarity_threshold (float, optional) – 用于过滤结果的相似度阈值。默认为 DEFAULT_SIMILARITY_THRESHOLD。
return_detailed_info (bool, optional) – 是否返回详细信息,包括相似度分数、内容路径和元数据。默认为False。
max_characters (int) – 每个分块中的最大字符数。 默认为 500。
- Returns:
- 默认情况下返回
仅文本信息。如果return_detailed_info参数为 True,则返回详细信息包括相似度 分数、内容路径和元数据。
- Return type:
dict[str, Sequence[Collection[str]]]
- Raises:
ValueError - 如果向量路径中存在具有内容名称的向量存储但有效载荷为None。如果contents为空。
RuntimeError – 如果在检索过程中发生任何错误。
- class camel.retrievers.BM25Retriever[来源]#
基础类:
BaseRetriever一个使用BM25模型实现的BaseRetriever。
该类通过基于查询的方法促进相关信息的检索,它根据查询词的出现情况和频率对文档进行排序。
- bm25#
用于计算文档分数的BM25Okapi类实例。
- Type:
BM25Okapi
- content_input_path#
已处理和存储内容的路径。
- Type:
字符串
- unstructured_modules#
一个用于解析文件和URL并根据指定参数分块内容的模块。
- Type:
参考文献
- class camel.retrievers.BaseRetriever[来源]#
基类:
ABC用于实现各类信息检索器的抽象基类。
- process(*input: Any) None#
定义每次调用时执行的进程行为。
- Processes content from a file or URL, divides it into chunks by
使用Unstructured IO,然后内部存储。在使用检索器执行查询之前必须调用此方法。
所有子类都应覆盖此方法。
注意
虽然前向传递的配方需要在此函数内定义,但之后应该调用
BaseRetriever实例而非此函数,因为前者会负责运行已注册的钩子,而后者会静默忽略它们。
- query(*input: Any) None#
定义每次调用时执行的查询行为。
- Query the results. Subclasses should implement this
根据其特定需求选择方法。
所有子类都应覆盖此方法。
注意
虽然前向传递的配方需要在此函数内定义,但之后应该调用
BaseRetriever实例而非此函数,因为前者会负责运行已注册的钩子,而后者会静默忽略它们。
- class camel.retrievers.CohereRerankRetriever(model_name: str = 'rerank-multilingual-v2.0', api_key: str | None = None)[来源]#
基础类:
BaseRetriever一个使用Cohere Re-ranking模型实现的BaseRetriever。
- model_name#
用于重新排序的模型名称。
- Type:
字符串
- api_key#
用于与Cohere服务进行身份验证的API密钥。
- Type:
可选[str]
参考文献
https://txt.cohere.com/rerank/
- query(query: str, retrieved_result: List[Dict[str, Any]], top_k: int = 1) List[Dict[str, Any]][来源]#
使用Cohere重新排序模型查询并编译结果。
- Parameters:
query (str) – 信息检索器的查询字符串。
retrieved_result (List[Dict[str, Any]]) - 需要重新排序的内容,应该是来自BaseRetriever如VectorRetriever的输出。
top_k (int, optional) – 检索时返回的顶部结果数量。必须为正整数。默认为DEFAULT_TOP_K_RESULTS。
- Returns:
查询结果的连接列表。
- Return type:
List[Dict[str, Any]]
- class camel.retrievers.HybridRetriever(embedding_model: BaseEmbedding | None = None, vector_storage: BaseVectorStorage | None = None)[来源]#
基础类:
BaseRetriever- process(content_input_path: str) None[来源]#
处理向量检索器和BM25检索器的内容输入路径。
- Parameters:
content_input_path (str) – 待处理内容的文件路径或URL。
- Raises:
ValueError - 如果content_input_path为空。
- query(query: str, top_k: int = 20, vector_weight: float = 0.8, bm25_weight: float = 0.2, rank_smoothing_factor: int = 60, vector_retriever_top_k: int = 50, vector_retriever_similarity_threshold: float = 0.5, bm25_retriever_top_k: int = 50, return_detailed_info: bool = False) dict[str, Sequence[Collection[str]]] | dict[str, Sequence[str | float]][来源]#
执行一个混合检索查询,同时使用向量检索器和BM25检索器。
- Parameters:
query (str) – 搜索查询语句。
top_k (int) – 返回的顶部结果数量(默认为20)。
vector_weight (float) - 在RRF中向量检索器结果的权重。
bm25_weight (float) - BM25检索器在RRF中的结果权重。
rank_smoothing_factor (int) - RRF超参数,用于排名平滑。
vector_retriever_top_k (int) – 向量检索器返回的顶部结果数量。
vector_retriever_similarity_threshold (float) – 向量检索器的相似度阈值。
bm25_retriever_top_k (int) – BM25检索器返回的顶部结果数量。
return_detailed_info (bool) – 如果为True则返回详细信息。
- Returns:
- Union[
dict[str, Sequence[Collection[str]]], dict[str, Sequence[Union[str, float]]]
- ]: 默认情况下,仅返回文本信息。如果
return_detailed_info为True,则返回详细信息 包括rrf分数。
- class camel.retrievers.VectorRetriever(embedding_model: BaseEmbedding | None = None, storage: BaseVectorStorage | None = None)[来源]#
基础类:
BaseRetriever一个通过使用向量存储和嵌入模型实现的BaseRetriever。
该类通过基于查询的方法,利用向量嵌入作为支持,便于检索相关信息。
- embedding_model#
用于生成向量嵌入的嵌入模型。
- Type:
- storage#
要查询的向量存储。
- Type:
- unstructured_modules#
一个用于解析文件和URL并根据指定参数分块内容的模块。
- Type:
- process(content: str | Element | IO[bytes], chunk_type: str = 'chunk_by_title', max_characters: int = 500, embed_batch: int = 50, should_chunk: bool = True, extra_info: dict | None = None, metadata_filename: str | None = None, chunker: BaseChunker | None = None, **kwargs: Any) None[来源]#
处理来自本地文件路径、远程URL、字符串内容、Element对象或二进制文件对象的内容,使用Unstructured IO将其分割成块,并将它们的嵌入存储在指定的向量存储中。
- Parameters:
content (Union[str, Element, IO[bytes]]) - 本地文件路径、远程URL、字符串内容、Element对象或二进制文件对象。
chunk_type (str) – 将要应用的块类型。默认为"chunk_by_title"。
max_characters (int) – 每个分块中的最大字符数。 默认为 500。
embed_batch (int) – 嵌入处理的批次大小。默认为 50。
should_chunk (bool) - 如果为True,则将内容分割成块,否则跳过分块处理。默认为True。
extra_info (Optional[dict]) - 要添加到payload中的额外信息。默认为None。
metadata_filename (Optional[str]) - 用于存储元数据的元数据文件名。默认为None。
**kwargs (Any) – 用于内容解析的额外关键字参数。
- query(query: str, top_k: int = 1, similarity_threshold: float = 0.7) List[Dict[str, Any]][来源]#
在向量存储中执行查询并将检索到的结果编译成字典。
- Parameters:
query (str) – 信息检索器的查询字符串。
similarity_threshold (float, optional) – 用于过滤结果的相似度阈值。默认为 DEFAULT_SIMILARITY_THRESHOLD。
top_k (int, optional) – 检索时返回的顶部结果数量。必须为正整数。默认为DEFAULT_TOP_K_RESULTS。
- Returns:
查询结果的连接列表。
- Return type:
List[Dict[str, Any]]
- Raises:
ValueError – 如果 'top_k' 小于或等于 0,如果向量存储为空,如果向量存储的 payload 为 None。