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"。- 当为 "ALWAYS" 时,代理在每次收到消息时都会提示人类输入。 在此模式下,当人类输入为 "exit" 或者 is_termination_msg 为 True 且没有人类输入时,对话停止。
- 当为 "TERMINATE" 时,代理仅在收到终止消息或自动回复次数达到最大连续自动回复次数时才提示人类输入。
- 当为 "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。这会带来风险,因为新文档可能会覆盖现有文档,可能导致集合中数据的意外丢失或更改。
- task (可选, str): 检索对话的任务。可能的取值为 "code"、"qa" 和 "default"。不同任务的系统提示将不同。默认值为
- 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_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 不为 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: ignoreid
- Union[str, int](标识):可以是字符串或整数类型。embedding
- Optional[List[float]](嵌入):一个可选的浮点数列表,用于表示文档的嵌入向量。metadata
- Dict[str, Any](元数据):一个字典,包含与文档相关的各种信息。document
- str(文档):表示文档内容的字符串。score
- float(得分):表示文档的得分。