Skip to content

Vector db

VectorDBToolSpec #

Bases: BaseToolSpec

矢量数据库工具规范。

Source code in llama_index/tools/vector_db/base.py
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
class VectorDBToolSpec(BaseToolSpec):
    """矢量数据库工具规范。"""

    spec_functions = ["auto_retrieve_fn"]

    def __init__(
        self,
        index: BaseIndex,  # TODO typing
    ) -> None:
        """使用参数进行初始化。"""
        self._index = index

    def auto_retrieve_fn(
        self,
        query: str,
        top_k: int,
        filter_key_list: List[str],
        filter_value_list: List[str],
    ) -> str:
        """自动检索功能。

从向量数据库中执行自动检索,然后应用一组过滤器。

Args:
    query(str):要搜索的查询
    top_k(int):要检索的结果数量
    filter_key_list(List[str]):过滤器键的列表
    filter_value_list(List[str]):过滤器值的列表
"""
        exact_match_filters = [
            ExactMatchFilter(key=k, value=v)
            for k, v in zip(filter_key_list, filter_value_list)
        ]
        retriever = VectorIndexRetriever(
            self._index,
            filters=MetadataFilters(filters=exact_match_filters),
            top_k=top_k,
        )
        query_engine = RetrieverQueryEngine.from_args(retriever)

        response = query_engine.query(query)
        return str(response)

auto_retrieve_fn #

auto_retrieve_fn(
    query: str,
    top_k: int,
    filter_key_list: List[str],
    filter_value_list: List[str],
) -> str

自动检索功能。

从向量数据库中执行自动检索,然后应用一组过滤器。

Source code in llama_index/tools/vector_db/base.py
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
    def auto_retrieve_fn(
        self,
        query: str,
        top_k: int,
        filter_key_list: List[str],
        filter_value_list: List[str],
    ) -> str:
        """自动检索功能。

从向量数据库中执行自动检索,然后应用一组过滤器。

Args:
    query(str):要搜索的查询
    top_k(int):要检索的结果数量
    filter_key_list(List[str]):过滤器键的列表
    filter_value_list(List[str]):过滤器值的列表
"""
        exact_match_filters = [
            ExactMatchFilter(key=k, value=v)
            for k, v in zip(filter_key_list, filter_value_list)
        ]
        retriever = VectorIndexRetriever(
            self._index,
            filters=MetadataFilters(filters=exact_match_filters),
            top_k=top_k,
        )
        query_engine = RetrieverQueryEngine.from_args(retriever)

        response = query_engine.query(query)
        return str(response)