agentchat.contrib.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 - whether to ask for human inputs every time a message is received. Possible values are "ALWAYS", "TERMINATE", "NEVER".- 当设置为“ALWAYS”时,代理每次收到消息时都会提示人工输入。在此模式下,当人工输入为“exit”时,或当is_termination_msg为True且没有人工输入时,对话将停止。
- 当“TERMINATE”时,代理仅在收到终止消息或自动回复次数达到max_consecutive_auto_reply时提示人类输入。
- 当为“NEVER”时,代理将永远不会提示需要人工输入。在此模式下,当自动回复的次数达到max_consecutive_auto_reply或is_termination_msg为True时,对话将停止。
is_termination_msg
函数 - 一个接收字典形式的消息并返回布尔值的函数,用于指示接收到的消息是否为终止消息。 该字典可以包含以下键:"content"(内容), "role"(角色), "name"(名称), "function_call"(函数调用)。retrieve_config
dict or None - config for the retrieve agent. To use default config, set to None. Otherwise, set to a dictionary with the following keys:- 任务(可选,str):检索聊天的任务。可能的值有 "code"、"qa" 和 "default"。系统提示将根据不同任务而有所不同。默认值为
default
,它同时支持代码和问答。 - client (可选, qdrant_client.QdrantClient(":memory:")): 一个QdrantClient实例。如果未提供,将会分配一个内存中的实例。不建议用于生产环境。
将会被使用。如果你想使用其他向量数据库,扩展这个类并重写
retrieve_docs
函数。 - docs_path (Optional, Union[str, List[str]]): 文档目录的路径。它也可以是单个文件的路径、单个文件的URL或目录、文件和URL的列表。默认为None,仅在集合已创建时有效。
- extra_docs(可选,布尔值):当为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): 用于检索聊天的上下文最大token大小。
如果未提供该键,将使用默认大小
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): 用于检索聊天的自定义回答前缀。默认值为""。
如果不为空且回答中不包含customized_answer_prefix,将触发
更新上下文
。 - 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 (可选, 可调用): 一个自定义函数,用于将字符串拆分为字符串列表。
默认值为 None,将使用
autogen.retrieve_utils.split_text_to_chunks
中的默认函数。 - custom_text_types(可选,List[str]):要处理的文件类型列表。默认为
autogen.retrieve_utils.TEXT_FORMATS
。 这仅适用于docs_path
目录下的文件。明确包含的文件和URL将根据其类型进行分块处理。 - recursive(可选,bool):是否要在docs_path中递归搜索文档。默认为True。
- parallel (可选, int): 用于嵌入的并行工作器数量。默认值为CPU核心数。
- on_disk(可选,bool):是否将集合存储在磁盘上。默认值为 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: 是否为文档字段创建payload索引。默认为False。 您可以在此处找到有关payload索引选项的更多信息: https://qdrant.tech/documentation/concepts/indexing/#payload-index API参考: https://qdrant.github.io/qdrant/redoc/index.html#tag/collections/operation/create_field_index
- 任务(可选,str):检索聊天的任务。可能的值有 "code"、"qa" 和 "default"。系统提示将根据不同任务而有所不同。默认值为
**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
可选, int - 每个块的最大标记数。默认值为4000。client
可选, QdrantClient - QdrantClient 实例。默认值为 None。collection_name
可选, str - 集合的名称。默认为 "all-my-documents"。chunk_mode
可选, str - 块模式。默认是 "multi_lines"。must_break_at_empty_line
可选, 布尔值 - 是否在空行处换行。默认值为 True。embedding_model
可选, str - 使用的嵌入模型。默认是 "BAAI/bge-small-en-v1.5"。 所有可用模型的列表可以在 https://qdrant.github.io/fastembed/examples/Supported_Models/ 找到。custom_text_split_function
可选,可调用 - 自定义函数,用于将字符串拆分为字符串列表。 默认为 None,将使用autogen.retrieve_utils.split_text_to_chunks
中的默认函数。custom_text_types
可选, List[str] - 要处理的文件类型列表。默认为TEXT_FORMATS。recursive
可选, bool - 是否在dir_path中递归搜索文档。默认为True。extra_docs
可选,布尔型 - 是否在集合中添加更多的文档。默认值为 Falseparallel
可选, int - 用于嵌入的并行工作线程数。默认为CPU核心数量on_disk
可选, bool - 是否将集合存储在磁盘上。默认值为 False。quantization_config
- 量化配置。如果为None,量化将被禁用。Ref
- https://qdrant.github.io/qdrant/redoc/index.html#tag/collections/operation/create_collectionhnsw_config
- HNSW配置。如果为None,将使用默认配置。Ref
- https://qdrant.github.io/qdrant/redoc/index.html#tag/collections/operation/create_collectionpayload_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不为空,则此参数将被忽略。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: ignoreid
- Union[str, int]embedding
- 可选的列表[List[float]]metadata
- Dict[str, Any]document
- strscore
- 浮点数