Skip to main content

qdrant_retrieve_user_proxy_agent

QdrantRetrieveUserProxyAgent

class QdrantRetrieveUserProxyAgent(RetrieveUserProxyAgent)

__init__

def __init__(name="RetrieveChatAgent",
human_input_mode: Literal["ALWAYS", "NEVER",
"TERMINATE"] = "ALWAYS",
is_termination_msg: Optional[Callable[[Dict], bool]] = None,
retrieve_config: Optional[Dict] = None,
**kwargs)

参数:

  • name str - 代理的名称。
  • human_input_mode str - 是否在每次收到消息时询问人类输入。 可能的取值为 "ALWAYS", "TERMINATE", "NEVER"。
    1. 当为 "ALWAYS" 时,代理在每次收到消息时都会提示人类输入。 在此模式下,当人类输入为 "exit" 或者 is_termination_msg 为 True 且没有人类输入时,对话停止。
    2. 当为 "TERMINATE" 时,代理仅在收到终止消息或自动回复次数达到最大连续自动回复次数时才提示人类输入。
    3. 当为 "NEVER" 时,代理将永远不会提示人类输入。在此模式下,当自动回复次数达到最大连续自动回复次数或 is_termination_msg 为 True 时,对话停止。
  • is_termination_msg function - 一个接受以字典形式表示的消息并返回一个布尔值的函数,指示接收到的消息是否为终止消息。 字典可以包含以下键:"content"、"role"、"name"、"function_call"。
  • retrieve_config dict or None - 检索代理的配置。 要使用默认配置,请设置为 None。否则,设置为具有以下键的字典:
    • task (可选, str): 检索对话的任务。可能的取值为 "code"、"qa" 和 "default"。不同任务的系统提示将不同。默认值为 default,支持代码和问答。
    • client (可选, qdrant_client.QdrantClient(":memory:")): 一个 QdrantClient 实例。如果未提供,将分配一个内存中的实例。不建议用于生产环境。 如果要使用其他向量数据库,请扩展此类并重写 retrieve_docs 函数。
    • docs_path (可选, Union[str, List[str]]): 文档目录的路径。它也可以是单个文件的路径、单个文件的 URL 或目录、文件和 URL 的列表。默认值为 None,仅在集合已经创建的情况下起作用。
    • extra_docs (可选, bool): 当为 true 时,允许添加具有唯一 ID 的文档而不覆盖现有文档;当为 false 时,使用默认 ID 替换现有文档,有可能覆盖集合。 当设置为true时,系统将从"length+i"开始为新的文档块分配唯一的ID,防止替换现有文档,并便于向集合中添加更多内容。 默认情况下,"extra_docs"设置为false,从零开始分配文档ID。这会带来风险,因为新文档可能会覆盖现有文档,可能导致集合中数据的意外丢失或更改。
  • collection_name(可选,str):集合的名称。 如果未提供键,则将使用默认名称autogen-docs
  • model(可选,str):用于检索聊天的模型。 如果未提供键,则将使用默认模型gpt-4
  • chunk_token_size(可选,int):检索聊天的块令牌大小。 如果未提供键,则将使用默认大小max_tokens * 0.4
  • context_max_tokens(可选,int):检索聊天的上下文最大令牌大小。 如果未提供键,则将使用默认大小max_tokens * 0.8
  • chunk_mode(可选,str):检索聊天的块模式。可能的值为"multi_lines"和"one_line"。如果未提供键,则将使用默认模式multi_lines
  • must_break_at_empty_line(可选,bool):如果为True,则块只会在空行处中断。默认为True。 如果chunk_mode为"one_line",则将忽略此参数。
  • embedding_model(可选,str):用于检索聊天的嵌入模型。 如果未提供键,则将使用默认模型BAAI/bge-small-en-v1.5。所有可用的模型可以在https://qdrant.github.io/fastembed/examples/Supported_Models/找到。
  • customized_prompt(可选,str):检索聊天的自定义提示。默认为None。
  • customized_answer_prefix(可选,str):检索聊天的自定义答案前缀。默认为""。 如果不为空,并且自定义答案前缀不在答案中,则会触发Update Context
  • update_context(可选,bool):如果为False,则不会对交互检索应用Update Context。默认为True。
  • custom_token_count_function(可选,Callable):用于计算字符串中令牌数量的自定义函数。 该函数应该以字符串为输入,并返回三个整数(token_count,tokens_per_message,tokens_per_name)。 默认为None,将使用tiktoken,对于非OpenAI模型可能不准确。
  • custom_text_split_function(可选,Callable):用于将字符串拆分为字符串列表的自定义函数。 默认为None,将使用autogen.retrieve_utils.split_text_to_chunks中的默认函数。
  • custom_text_types(可选,List[str]):要处理的文件类型列表。默认为autogen.retrieve_utils.TEXT_FORMATS。 这仅适用于docs_path目录下的文件。明确包含的文件和URL将被分块,而不考虑其类型。
  • recursive(可选,布尔型):是否在docs_path中递归搜索文档。默认为True。
  • parallel(可选,整型):用于嵌入的并行工作器数量。默认为CPU核心数。
  • on_disk(可选,布尔型):是否将集合存储在磁盘上。默认为False。
  • quantization_config:量化配置。如果为None,则禁用量化。
  • hnsw_config:HNSW配置。如果为None,则使用默认配置。 您可以在https://qdrant.tech/documentation/concepts/indexing/#vector-index中找到有关hnsw配置选项的更多信息。 API参考:https://qdrant.github.io/qdrant/redoc/index.html#tag/collections/operation/create_collection
  • payload_indexing:是否为文档字段创建有效负载索引。默认为False。 您可以在https://qdrant.tech/documentation/concepts/indexing/#payload-index中找到有关有效负载索引选项的更多信息。 API参考:https://qdrant.github.io/qdrant/redoc/index.html#tag/collections/operation/create_field_index
  • **kwargs dict - UserProxyAgent中的其他kwargs。

retrieve_docs

def retrieve_docs(problem: str, n_results: int = 20, search_string: str = "")

参数

  • problem str - 要解决的问题。
  • n_results int - 要检索的结果数量。默认为20。
  • search_string str - 只检索包含此字符串的文档。默认为""。

create_qdrant_from_dir

def create_qdrant_from_dir(
dir_path: str,
max_tokens: int = 4000,
client: QdrantClient = None,
collection_name: str = "all-my-documents",
chunk_mode: str = "multi_lines",
must_break_at_empty_line: bool = True,
embedding_model: str = "BAAI/bge-small-en-v1.5",
custom_text_split_function: Callable = None,
custom_text_types: List[str] = TEXT_FORMATS,
recursive: bool = True,
extra_docs: bool = False,
parallel: int = 0,
on_disk: bool = False,
quantization_config: Optional[models.QuantizationConfig] = None,
hnsw_config: Optional[models.HnswConfigDiff] = None,
payload_indexing: bool = False,
qdrant_client_options: Optional[Dict] = {})

从给定目录中的所有文件创建一个Qdrant集合,该目录也可以是单个文件或指向单个文件的URL。

参数

  • dir_path str - 目录、文件或URL的路径。
  • max_tokens Optional, int - 每个块的最大标记数。默认为4000。
  • client Optional, QdrantClient - QdrantClient实例。默认为None。
  • collection_name Optional, str - 集合的名称。默认为"all-my-documents"。
  • chunk_mode Optional, str - 块模式。默认为"multi_lines"。
  • must_break_at_empty_line Optional, bool - 是否在空行处中断。默认为True。
  • embedding_model 可选, str - 使用的嵌入模型。默认为 "BAAI/bge-small-en-v1.5"。 可用模型的列表可以在 https://qdrant.github.io/fastembed/examples/Supported_Models/ 找到。
  • custom_text_split_function 可选, Callable - 用于将字符串拆分为字符串列表的自定义函数。 默认为 None,将使用 autogen.retrieve_utils.split_text_to_chunks 中的默认函数。
  • custom_text_types 可选, List[str] - 要处理的文件类型列表。默认为 TEXT_FORMATS。
  • recursive 可选, bool - 是否递归搜索 dir_path 中的文档。默认为 True。
  • extra_docs 可选, bool - 是否在集合中添加更多文档。默认为 False。
  • parallel 可选, int - 用于嵌入的并行工作线程数。默认为 CPU 核心数。
  • on_disk 可选, bool - 是否将集合存储在磁盘上。默认为 False。
  • quantization_config - 量化配置。如果为 None,则禁用量化。
  • Ref - https://qdrant.github.io/qdrant/redoc/index.html#tag/collections/operation/create_collection
  • hnsw_config - HNSW 配置。如果为 None,则使用默认配置。
  • Ref - https://qdrant.github.io/qdrant/redoc/index.html#tag/collections/operation/create_collection
  • payload_indexing - 是否为文档字段创建负载索引。默认为 False。
  • qdrant_client_options - (可选, dict): 实例化 qdrant 客户端的选项。
  • Ref - https://github.com/qdrant/qdrant-client/blob/master/qdrant_client/qdrant_client.py#L36-L58。

query_qdrant

def query_qdrant(
query_texts: List[str],
n_results: int = 10,
client: QdrantClient = None,
collection_name: str = "all-my-documents",
search_string: str = "",
embedding_model: str = "BAAI/bge-small-en-v1.5",
qdrant_client_options: Optional[Dict] = {}
) -> List[List[QueryResponse]]

在 Qdrant 集合上执行带有过滤器的相似度搜索

参数:

  • query_texts List[str] - 查询文本。
  • n_results 可选, int - 要返回的结果数。默认为 10。
  • client 可选, API - QdrantClient 实例。如果为 None,则会实例化一个默认的内存客户端。
  • collection_name 可选, str - 集合的名称。默认为 "all-my-documents"。
  • search_string 可选, str - 搜索字符串。默认为 ""。
  • embedding_model 可选, str - 使用的嵌入模型。默认为 "all-MiniLM-L6-v2"。如果 embedding_function 不为 None,则将被忽略。
  • qdrant_client_options - (可选, dict): 实例化 qdrant 客户端的选项。参考: https://github.com/qdrant/qdrant-client/blob/master/qdrant_client/qdrant_client.py#L36-L58。

返回:

  • List[List[QueryResponse]] - 查询结果。格式为: class QueryResponse(BaseModel, extra="forbid"): # type: ignore
  • id - Union[str, int](标识):可以是字符串或整数类型。
  • embedding - Optional[List[float]](嵌入):一个可选的浮点数列表,用于表示文档的嵌入向量。
  • metadata - Dict[str, Any](元数据):一个字典,包含与文档相关的各种信息。
  • document - str(文档):表示文档内容的字符串。
  • score - float(得分):表示文档的得分。