camel.retrievers 包

本页内容

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:

UnstructuredIO

参考文献

dorianbrown/rank_bm25

process(content_input_path: str, chunk_type: str = 'chunk_by_title', **kwargs: Any) None[来源]#

处理来自文件或URL的内容,使用Unstructured IO将其分割成块,然后存储在内部。在使用检索器执行查询之前必须调用此方法。

Parameters:
  • content_input_path (str) - 待处理内容的文件路径或URL。

  • chunk_type (str) – 将要应用的块类型。默认为"chunk_by_title"。

  • **kwargs (Any) – 用于内容解析的额外关键字参数。

query(query: str, top_k: int = 1) List[Dict[str, Any]][来源]#

执行查询并编译结果。

Parameters:
  • query (str) - 信息检索器的查询字符串。

  • top_k (int, optional) – 在检索过程中返回的顶部结果数量。必须为正整数。默认为DEFAULT_TOP_K_RESULTS

Returns:

查询结果的连接列表。

Return type:

列表[字典[str]]

Raises:

ValueError – 如果 top_k 小于或等于 0,或者 BM25 模型尚未通过先调用 process 进行初始化。

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]]) – 需要重新排序的内容,应该是来自BaseRetrieverVectorRetriever的输出。

  • 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:

BaseEmbedding

storage#

要查询的向量存储。

Type:

BaseVectorStorage

unstructured_modules#

一个用于解析文件和URL并根据指定参数分块内容的模块。

Type:

UnstructuredIO

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:

UnstructuredIO

参考文献

dorianbrown/rank_bm25

process(content_input_path: str, chunk_type: str = 'chunk_by_title', **kwargs: Any) None[来源]#

处理来自文件或URL的内容,使用Unstructured IO将其分割成块,然后存储在内部。在使用检索器执行查询之前必须调用此方法。

Parameters:
  • content_input_path (str) - 待处理内容的文件路径或URL。

  • chunk_type (str) – 将要应用的块类型。默认为"chunk_by_title"。

  • **kwargs (Any) – 用于内容解析的额外关键字参数。

query(query: str, top_k: int = 1) List[Dict[str, Any]][来源]#

执行查询并编译结果。

Parameters:
  • query (str) – 信息检索器的查询字符串。

  • top_k (int, optional) – 检索时返回的顶部结果数量。必须为正整数。默认为DEFAULT_TOP_K_RESULTS

Returns:

查询结果的连接列表。

Return type:

列表[字典[str]]

Raises:

ValueError – 如果 top_k 小于或等于 0,或者 BM25 模型尚未通过先调用 process 进行初始化。

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]]) - 需要重新排序的内容,应该是来自BaseRetrieverVectorRetriever的输出。

  • 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_infoTrue,则返回详细信息 包括rrf分数。

class camel.retrievers.VectorRetriever(embedding_model: BaseEmbedding | None = None, storage: BaseVectorStorage | None = None)[来源]#

基础类: BaseRetriever

一个通过使用向量存储和嵌入模型实现的BaseRetriever

该类通过基于查询的方法,利用向量嵌入作为支持,便于检索相关信息。

embedding_model#

用于生成向量嵌入的嵌入模型。

Type:

BaseEmbedding

storage#

要查询的向量存储。

Type:

BaseVectorStorage

unstructured_modules#

一个用于解析文件和URL并根据指定参数分块内容的模块。

Type:

UnstructuredIO

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。