diff --git a/libs/community/langchain_community/vectorstores/tencentvectordb.py b/libs/community/langchain_community/vectorstores/tencentvectordb.py index 53036b4802e..d9c070f177d 100644 --- a/libs/community/langchain_community/vectorstores/tencentvectordb.py +++ b/libs/community/langchain_community/vectorstores/tencentvectordb.py @@ -110,11 +110,11 @@ def translate_filter( lc_filter: str, allowed_fields: Optional[Sequence[str]] = None ) -> str: from langchain.chains.query_constructor.base import fix_filter_directive - from langchain.chains.query_constructor.ir import FilterDirective from langchain.chains.query_constructor.parser import get_parser from langchain.retrievers.self_query.tencentvectordb import ( TencentVectorDBTranslator, ) + from langchain_core.structured_query import FilterDirective tvdb_visitor = TencentVectorDBTranslator(allowed_fields) flt = cast( diff --git a/libs/core/langchain_core/structured_query.py b/libs/core/langchain_core/structured_query.py new file mode 100644 index 00000000000..eb61cea6b50 --- /dev/null +++ b/libs/core/langchain_core/structured_query.py @@ -0,0 +1,143 @@ +"""Internal representation of a structured query language.""" +from __future__ import annotations + +from abc import ABC, abstractmethod +from enum import Enum +from typing import Any, List, Optional, Sequence, Union + +from langchain_core.pydantic_v1 import BaseModel + + +class Visitor(ABC): + """Defines interface for IR translation using visitor pattern.""" + + allowed_comparators: Optional[Sequence[Comparator]] = None + allowed_operators: Optional[Sequence[Operator]] = None + + def _validate_func(self, func: Union[Operator, Comparator]) -> None: + if isinstance(func, Operator) and self.allowed_operators is not None: + if func not in self.allowed_operators: + raise ValueError( + f"Received disallowed operator {func}. Allowed " + f"comparators are {self.allowed_operators}" + ) + if isinstance(func, Comparator) and self.allowed_comparators is not None: + if func not in self.allowed_comparators: + raise ValueError( + f"Received disallowed comparator {func}. Allowed " + f"comparators are {self.allowed_comparators}" + ) + + @abstractmethod + def visit_operation(self, operation: Operation) -> Any: + """Translate an Operation.""" + + @abstractmethod + def visit_comparison(self, comparison: Comparison) -> Any: + """Translate a Comparison.""" + + @abstractmethod + def visit_structured_query(self, structured_query: StructuredQuery) -> Any: + """Translate a StructuredQuery.""" + + +def _to_snake_case(name: str) -> str: + """Convert a name into snake_case.""" + snake_case = "" + for i, char in enumerate(name): + if char.isupper() and i != 0: + snake_case += "_" + char.lower() + else: + snake_case += char.lower() + return snake_case + + +class Expr(BaseModel): + """Base class for all expressions.""" + + def accept(self, visitor: Visitor) -> Any: + """Accept a visitor. + + Args: + visitor: visitor to accept + + Returns: + result of visiting + """ + return getattr(visitor, f"visit_{_to_snake_case(self.__class__.__name__)}")( + self + ) + + +class Operator(str, Enum): + """Enumerator of the operations.""" + + AND = "and" + OR = "or" + NOT = "not" + + +class Comparator(str, Enum): + """Enumerator of the comparison operators.""" + + EQ = "eq" + NE = "ne" + GT = "gt" + GTE = "gte" + LT = "lt" + LTE = "lte" + CONTAIN = "contain" + LIKE = "like" + IN = "in" + NIN = "nin" + + +class FilterDirective(Expr, ABC): + """A filtering expression.""" + + +class Comparison(FilterDirective): + """A comparison to a value.""" + + comparator: Comparator + attribute: str + value: Any + + def __init__( + self, comparator: Comparator, attribute: str, value: Any, **kwargs: Any + ) -> None: + super().__init__( + comparator=comparator, attribute=attribute, value=value, **kwargs + ) + + +class Operation(FilterDirective): + """A logical operation over other directives.""" + + operator: Operator + arguments: List[FilterDirective] + + def __init__( + self, operator: Operator, arguments: List[FilterDirective], **kwargs: Any + ): + super().__init__(operator=operator, arguments=arguments, **kwargs) + + +class StructuredQuery(Expr): + """A structured query.""" + + query: str + """Query string.""" + filter: Optional[FilterDirective] + """Filtering expression.""" + limit: Optional[int] + """Limit on the number of results.""" + + def __init__( + self, + query: str, + filter: Optional[FilterDirective], + limit: Optional[int] = None, + **kwargs: Any, + ): + super().__init__(query=query, filter=filter, limit=limit, **kwargs) diff --git a/libs/langchain/langchain/chains/query_constructor/base.py b/libs/langchain/langchain/chains/query_constructor/base.py index a0cd9ad8854..9b7e3d37dae 100644 --- a/libs/langchain/langchain/chains/query_constructor/base.py +++ b/libs/langchain/langchain/chains/query_constructor/base.py @@ -11,9 +11,7 @@ from langchain_core.output_parsers.json import parse_and_check_json_markdown from langchain_core.prompts import BasePromptTemplate from langchain_core.prompts.few_shot import FewShotPromptTemplate from langchain_core.runnables import Runnable - -from langchain.chains.llm import LLMChain -from langchain.chains.query_constructor.ir import ( +from langchain_core.structured_query import ( Comparator, Comparison, FilterDirective, @@ -21,6 +19,8 @@ from langchain.chains.query_constructor.ir import ( Operator, StructuredQuery, ) + +from langchain.chains.llm import LLMChain from langchain.chains.query_constructor.parser import get_parser from langchain.chains.query_constructor.prompt import ( DEFAULT_EXAMPLES, diff --git a/libs/langchain/langchain/chains/query_constructor/ir.py b/libs/langchain/langchain/chains/query_constructor/ir.py index eb61cea6b50..6c854ae59d4 100644 --- a/libs/langchain/langchain/chains/query_constructor/ir.py +++ b/libs/langchain/langchain/chains/query_constructor/ir.py @@ -1,143 +1,22 @@ """Internal representation of a structured query language.""" -from __future__ import annotations +from langchain_core.structured_query import ( + Comparator, + Comparison, + Expr, + FilterDirective, + Operation, + Operator, + StructuredQuery, + Visitor, +) -from abc import ABC, abstractmethod -from enum import Enum -from typing import Any, List, Optional, Sequence, Union - -from langchain_core.pydantic_v1 import BaseModel - - -class Visitor(ABC): - """Defines interface for IR translation using visitor pattern.""" - - allowed_comparators: Optional[Sequence[Comparator]] = None - allowed_operators: Optional[Sequence[Operator]] = None - - def _validate_func(self, func: Union[Operator, Comparator]) -> None: - if isinstance(func, Operator) and self.allowed_operators is not None: - if func not in self.allowed_operators: - raise ValueError( - f"Received disallowed operator {func}. Allowed " - f"comparators are {self.allowed_operators}" - ) - if isinstance(func, Comparator) and self.allowed_comparators is not None: - if func not in self.allowed_comparators: - raise ValueError( - f"Received disallowed comparator {func}. Allowed " - f"comparators are {self.allowed_comparators}" - ) - - @abstractmethod - def visit_operation(self, operation: Operation) -> Any: - """Translate an Operation.""" - - @abstractmethod - def visit_comparison(self, comparison: Comparison) -> Any: - """Translate a Comparison.""" - - @abstractmethod - def visit_structured_query(self, structured_query: StructuredQuery) -> Any: - """Translate a StructuredQuery.""" - - -def _to_snake_case(name: str) -> str: - """Convert a name into snake_case.""" - snake_case = "" - for i, char in enumerate(name): - if char.isupper() and i != 0: - snake_case += "_" + char.lower() - else: - snake_case += char.lower() - return snake_case - - -class Expr(BaseModel): - """Base class for all expressions.""" - - def accept(self, visitor: Visitor) -> Any: - """Accept a visitor. - - Args: - visitor: visitor to accept - - Returns: - result of visiting - """ - return getattr(visitor, f"visit_{_to_snake_case(self.__class__.__name__)}")( - self - ) - - -class Operator(str, Enum): - """Enumerator of the operations.""" - - AND = "and" - OR = "or" - NOT = "not" - - -class Comparator(str, Enum): - """Enumerator of the comparison operators.""" - - EQ = "eq" - NE = "ne" - GT = "gt" - GTE = "gte" - LT = "lt" - LTE = "lte" - CONTAIN = "contain" - LIKE = "like" - IN = "in" - NIN = "nin" - - -class FilterDirective(Expr, ABC): - """A filtering expression.""" - - -class Comparison(FilterDirective): - """A comparison to a value.""" - - comparator: Comparator - attribute: str - value: Any - - def __init__( - self, comparator: Comparator, attribute: str, value: Any, **kwargs: Any - ) -> None: - super().__init__( - comparator=comparator, attribute=attribute, value=value, **kwargs - ) - - -class Operation(FilterDirective): - """A logical operation over other directives.""" - - operator: Operator - arguments: List[FilterDirective] - - def __init__( - self, operator: Operator, arguments: List[FilterDirective], **kwargs: Any - ): - super().__init__(operator=operator, arguments=arguments, **kwargs) - - -class StructuredQuery(Expr): - """A structured query.""" - - query: str - """Query string.""" - filter: Optional[FilterDirective] - """Filtering expression.""" - limit: Optional[int] - """Limit on the number of results.""" - - def __init__( - self, - query: str, - filter: Optional[FilterDirective], - limit: Optional[int] = None, - **kwargs: Any, - ): - super().__init__(query=query, filter=filter, limit=limit, **kwargs) +__all__ = [ + "Visitor", + "Expr", + "Operator", + "Comparator", + "FilterDirective", + "Comparison", + "Operation", + "StructuredQuery", +] diff --git a/libs/langchain/langchain/chains/query_constructor/parser.py b/libs/langchain/langchain/chains/query_constructor/parser.py index 26c5360d59f..04e457ddb9b 100644 --- a/libs/langchain/langchain/chains/query_constructor/parser.py +++ b/libs/langchain/langchain/chains/query_constructor/parser.py @@ -17,7 +17,7 @@ except ImportError: Transformer = object # type: ignore Lark = object # type: ignore -from langchain.chains.query_constructor.ir import ( +from langchain_core.structured_query import ( Comparator, Comparison, FilterDirective, diff --git a/libs/langchain/langchain/retrievers/self_query/astradb.py b/libs/langchain/langchain/retrievers/self_query/astradb.py index 0b8d3ab800f..006972935ff 100644 --- a/libs/langchain/langchain/retrievers/self_query/astradb.py +++ b/libs/langchain/langchain/retrievers/self_query/astradb.py @@ -1,7 +1,7 @@ """Logic for converting internal query language to a valid AstraDB query.""" from typing import Dict, Tuple, Union -from langchain.chains.query_constructor.ir import ( +from langchain_core.structured_query import ( Comparator, Comparison, Operation, diff --git a/libs/langchain/langchain/retrievers/self_query/base.py b/libs/langchain/langchain/retrievers/self_query/base.py index 14773ee1e57..3295a593b8e 100644 --- a/libs/langchain/langchain/retrievers/self_query/base.py +++ b/libs/langchain/langchain/retrievers/self_query/base.py @@ -38,10 +38,10 @@ from langchain_core.language_models import BaseLanguageModel from langchain_core.pydantic_v1 import Field, root_validator from langchain_core.retrievers import BaseRetriever from langchain_core.runnables import Runnable +from langchain_core.structured_query import StructuredQuery, Visitor from langchain_core.vectorstores import VectorStore from langchain.chains.query_constructor.base import load_query_constructor_runnable -from langchain.chains.query_constructor.ir import StructuredQuery, Visitor from langchain.chains.query_constructor.schema import AttributeInfo from langchain.retrievers.self_query.astradb import AstraDBTranslator from langchain.retrievers.self_query.chroma import ChromaTranslator diff --git a/libs/langchain/langchain/retrievers/self_query/chroma.py b/libs/langchain/langchain/retrievers/self_query/chroma.py index 8c9a79b12d3..6f766e7e138 100644 --- a/libs/langchain/langchain/retrievers/self_query/chroma.py +++ b/libs/langchain/langchain/retrievers/self_query/chroma.py @@ -1,6 +1,6 @@ from typing import Dict, Tuple, Union -from langchain.chains.query_constructor.ir import ( +from langchain_core.structured_query import ( Comparator, Comparison, Operation, diff --git a/libs/langchain/langchain/retrievers/self_query/dashvector.py b/libs/langchain/langchain/retrievers/self_query/dashvector.py index 24ae50239ad..c1d63d1aaea 100644 --- a/libs/langchain/langchain/retrievers/self_query/dashvector.py +++ b/libs/langchain/langchain/retrievers/self_query/dashvector.py @@ -1,7 +1,7 @@ """Logic for converting internal query language to a valid DashVector query.""" from typing import Tuple, Union -from langchain.chains.query_constructor.ir import ( +from langchain_core.structured_query import ( Comparator, Comparison, Operation, diff --git a/libs/langchain/langchain/retrievers/self_query/databricks_vector_search.py b/libs/langchain/langchain/retrievers/self_query/databricks_vector_search.py index f8ef053f5a5..78dc17c7fc7 100644 --- a/libs/langchain/langchain/retrievers/self_query/databricks_vector_search.py +++ b/libs/langchain/langchain/retrievers/self_query/databricks_vector_search.py @@ -2,7 +2,7 @@ from collections import ChainMap from itertools import chain from typing import Dict, Tuple -from langchain.chains.query_constructor.ir import ( +from langchain_core.structured_query import ( Comparator, Comparison, Operation, diff --git a/libs/langchain/langchain/retrievers/self_query/deeplake.py b/libs/langchain/langchain/retrievers/self_query/deeplake.py index 030933b32e8..d7e2ab87d6a 100644 --- a/libs/langchain/langchain/retrievers/self_query/deeplake.py +++ b/libs/langchain/langchain/retrievers/self_query/deeplake.py @@ -1,7 +1,7 @@ """Logic for converting internal query language to a valid Chroma query.""" from typing import Tuple, Union -from langchain.chains.query_constructor.ir import ( +from langchain_core.structured_query import ( Comparator, Comparison, Operation, diff --git a/libs/langchain/langchain/retrievers/self_query/dingo.py b/libs/langchain/langchain/retrievers/self_query/dingo.py index 76e9ef862d3..6c2402f65c9 100644 --- a/libs/langchain/langchain/retrievers/self_query/dingo.py +++ b/libs/langchain/langchain/retrievers/self_query/dingo.py @@ -1,6 +1,6 @@ from typing import Tuple, Union -from langchain.chains.query_constructor.ir import ( +from langchain_core.structured_query import ( Comparator, Comparison, Operation, diff --git a/libs/langchain/langchain/retrievers/self_query/elasticsearch.py b/libs/langchain/langchain/retrievers/self_query/elasticsearch.py index 7c2f7671a5c..d07c284b125 100644 --- a/libs/langchain/langchain/retrievers/self_query/elasticsearch.py +++ b/libs/langchain/langchain/retrievers/self_query/elasticsearch.py @@ -1,6 +1,6 @@ from typing import Dict, Tuple, Union -from langchain.chains.query_constructor.ir import ( +from langchain_core.structured_query import ( Comparator, Comparison, Operation, diff --git a/libs/langchain/langchain/retrievers/self_query/milvus.py b/libs/langchain/langchain/retrievers/self_query/milvus.py index dbc61f6f712..6fb1cc5c4e4 100644 --- a/libs/langchain/langchain/retrievers/self_query/milvus.py +++ b/libs/langchain/langchain/retrievers/self_query/milvus.py @@ -1,7 +1,7 @@ """Logic for converting internal query language to a valid Milvus query.""" from typing import Tuple, Union -from langchain.chains.query_constructor.ir import ( +from langchain_core.structured_query import ( Comparator, Comparison, Operation, diff --git a/libs/langchain/langchain/retrievers/self_query/mongodb_atlas.py b/libs/langchain/langchain/retrievers/self_query/mongodb_atlas.py index a10e7b58fa9..ebef2163beb 100644 --- a/libs/langchain/langchain/retrievers/self_query/mongodb_atlas.py +++ b/libs/langchain/langchain/retrievers/self_query/mongodb_atlas.py @@ -1,7 +1,7 @@ """Logic for converting internal query language to a valid MongoDB Atlas query.""" from typing import Dict, Tuple, Union -from langchain.chains.query_constructor.ir import ( +from langchain_core.structured_query import ( Comparator, Comparison, Operation, diff --git a/libs/langchain/langchain/retrievers/self_query/myscale.py b/libs/langchain/langchain/retrievers/self_query/myscale.py index 8b1afaf8b9d..50a74c568b6 100644 --- a/libs/langchain/langchain/retrievers/self_query/myscale.py +++ b/libs/langchain/langchain/retrievers/self_query/myscale.py @@ -1,7 +1,7 @@ import re from typing import Any, Callable, Dict, Tuple -from langchain.chains.query_constructor.ir import ( +from langchain_core.structured_query import ( Comparator, Comparison, Operation, diff --git a/libs/langchain/langchain/retrievers/self_query/opensearch.py b/libs/langchain/langchain/retrievers/self_query/opensearch.py index bb27cddd0b4..e01ec66639e 100644 --- a/libs/langchain/langchain/retrievers/self_query/opensearch.py +++ b/libs/langchain/langchain/retrievers/self_query/opensearch.py @@ -1,6 +1,6 @@ from typing import Dict, Tuple, Union -from langchain.chains.query_constructor.ir import ( +from langchain_core.structured_query import ( Comparator, Comparison, Operation, diff --git a/libs/langchain/langchain/retrievers/self_query/pgvector.py b/libs/langchain/langchain/retrievers/self_query/pgvector.py index ebe5bf42ffc..5fea65b01c8 100644 --- a/libs/langchain/langchain/retrievers/self_query/pgvector.py +++ b/libs/langchain/langchain/retrievers/self_query/pgvector.py @@ -1,6 +1,6 @@ from typing import Dict, Tuple, Union -from langchain.chains.query_constructor.ir import ( +from langchain_core.structured_query import ( Comparator, Comparison, Operation, diff --git a/libs/langchain/langchain/retrievers/self_query/pinecone.py b/libs/langchain/langchain/retrievers/self_query/pinecone.py index 80c401dd95f..99c42f393bf 100644 --- a/libs/langchain/langchain/retrievers/self_query/pinecone.py +++ b/libs/langchain/langchain/retrievers/self_query/pinecone.py @@ -1,6 +1,6 @@ from typing import Dict, Tuple, Union -from langchain.chains.query_constructor.ir import ( +from langchain_core.structured_query import ( Comparator, Comparison, Operation, diff --git a/libs/langchain/langchain/retrievers/self_query/qdrant.py b/libs/langchain/langchain/retrievers/self_query/qdrant.py index c99287751a1..f4c3298b667 100644 --- a/libs/langchain/langchain/retrievers/self_query/qdrant.py +++ b/libs/langchain/langchain/retrievers/self_query/qdrant.py @@ -2,7 +2,7 @@ from __future__ import annotations from typing import TYPE_CHECKING, Tuple -from langchain.chains.query_constructor.ir import ( +from langchain_core.structured_query import ( Comparator, Comparison, Operation, diff --git a/libs/langchain/langchain/retrievers/self_query/redis.py b/libs/langchain/langchain/retrievers/self_query/redis.py index cefe576182e..56d3a17b555 100644 --- a/libs/langchain/langchain/retrievers/self_query/redis.py +++ b/libs/langchain/langchain/retrievers/self_query/redis.py @@ -12,8 +12,7 @@ from langchain_community.vectorstores.redis.filters import ( RedisText, ) from langchain_community.vectorstores.redis.schema import RedisModel - -from langchain.chains.query_constructor.ir import ( +from langchain_core.structured_query import ( Comparator, Comparison, Operation, diff --git a/libs/langchain/langchain/retrievers/self_query/supabase.py b/libs/langchain/langchain/retrievers/self_query/supabase.py index 0ac0f183d78..63794cf3787 100644 --- a/libs/langchain/langchain/retrievers/self_query/supabase.py +++ b/libs/langchain/langchain/retrievers/self_query/supabase.py @@ -1,6 +1,6 @@ from typing import Any, Dict, Tuple -from langchain.chains.query_constructor.ir import ( +from langchain_core.structured_query import ( Comparator, Comparison, Operation, diff --git a/libs/langchain/langchain/retrievers/self_query/tencentvectordb.py b/libs/langchain/langchain/retrievers/self_query/tencentvectordb.py index c01f2b3e9bf..9bed9c1cddb 100644 --- a/libs/langchain/langchain/retrievers/self_query/tencentvectordb.py +++ b/libs/langchain/langchain/retrievers/self_query/tencentvectordb.py @@ -2,7 +2,7 @@ from __future__ import annotations from typing import Optional, Sequence, Tuple -from langchain.chains.query_constructor.ir import ( +from langchain_core.structured_query import ( Comparator, Comparison, Operation, diff --git a/libs/langchain/langchain/retrievers/self_query/timescalevector.py b/libs/langchain/langchain/retrievers/self_query/timescalevector.py index 3d417578fe5..bfac120bded 100644 --- a/libs/langchain/langchain/retrievers/self_query/timescalevector.py +++ b/libs/langchain/langchain/retrievers/self_query/timescalevector.py @@ -2,7 +2,7 @@ from __future__ import annotations from typing import TYPE_CHECKING, Tuple, Union -from langchain.chains.query_constructor.ir import ( +from langchain_core.structured_query import ( Comparator, Comparison, Operation, diff --git a/libs/langchain/langchain/retrievers/self_query/vectara.py b/libs/langchain/langchain/retrievers/self_query/vectara.py index 02d64f04708..24886a1af99 100644 --- a/libs/langchain/langchain/retrievers/self_query/vectara.py +++ b/libs/langchain/langchain/retrievers/self_query/vectara.py @@ -1,6 +1,6 @@ from typing import Tuple, Union -from langchain.chains.query_constructor.ir import ( +from langchain_core.structured_query import ( Comparator, Comparison, Operation, diff --git a/libs/langchain/langchain/retrievers/self_query/weaviate.py b/libs/langchain/langchain/retrievers/self_query/weaviate.py index 1db80b9ba00..2e5e3e691e2 100644 --- a/libs/langchain/langchain/retrievers/self_query/weaviate.py +++ b/libs/langchain/langchain/retrievers/self_query/weaviate.py @@ -1,7 +1,7 @@ from datetime import datetime from typing import Dict, Tuple, Union -from langchain.chains.query_constructor.ir import ( +from langchain_core.structured_query import ( Comparator, Comparison, Operation, diff --git a/libs/langchain/tests/unit_tests/chains/query_constructor/test_parser.py b/libs/langchain/tests/unit_tests/chains/query_constructor/test_parser.py index 0b83e6ef01a..db2c7ca1cd0 100644 --- a/libs/langchain/tests/unit_tests/chains/query_constructor/test_parser.py +++ b/libs/langchain/tests/unit_tests/chains/query_constructor/test_parser.py @@ -3,13 +3,13 @@ from typing import Any, cast import lark import pytest - -from langchain.chains.query_constructor.ir import ( +from langchain_core.structured_query import ( Comparator, Comparison, Operation, Operator, ) + from langchain.chains.query_constructor.parser import get_parser DEFAULT_PARSER = get_parser() diff --git a/libs/langchain/tests/unit_tests/retrievers/self_query/test_astradb.py b/libs/langchain/tests/unit_tests/retrievers/self_query/test_astradb.py index 78fc47603a4..81128716071 100644 --- a/libs/langchain/tests/unit_tests/retrievers/self_query/test_astradb.py +++ b/libs/langchain/tests/unit_tests/retrievers/self_query/test_astradb.py @@ -1,12 +1,13 @@ from typing import Dict, Tuple -from langchain.chains.query_constructor.ir import ( +from langchain_core.structured_query import ( Comparator, Comparison, Operation, Operator, StructuredQuery, ) + from langchain.retrievers.self_query.astradb import AstraDBTranslator DEFAULT_TRANSLATOR = AstraDBTranslator() diff --git a/libs/langchain/tests/unit_tests/retrievers/self_query/test_base.py b/libs/langchain/tests/unit_tests/retrievers/self_query/test_base.py index 1eeab1dfb8e..03c5a6fc00a 100644 --- a/libs/langchain/tests/unit_tests/retrievers/self_query/test_base.py +++ b/libs/langchain/tests/unit_tests/retrievers/self_query/test_base.py @@ -6,8 +6,7 @@ from langchain_core.callbacks.manager import ( CallbackManagerForRetrieverRun, ) from langchain_core.documents import Document - -from langchain.chains.query_constructor.ir import ( +from langchain_core.structured_query import ( Comparator, Comparison, Operation, @@ -15,6 +14,7 @@ from langchain.chains.query_constructor.ir import ( StructuredQuery, Visitor, ) + from langchain.chains.query_constructor.schema import AttributeInfo from langchain.retrievers import SelfQueryRetriever from tests.unit_tests.indexes.test_indexing import InMemoryVectorStore diff --git a/libs/langchain/tests/unit_tests/retrievers/self_query/test_chroma.py b/libs/langchain/tests/unit_tests/retrievers/self_query/test_chroma.py index 47c74cb5f19..45fed14f564 100644 --- a/libs/langchain/tests/unit_tests/retrievers/self_query/test_chroma.py +++ b/libs/langchain/tests/unit_tests/retrievers/self_query/test_chroma.py @@ -1,12 +1,13 @@ from typing import Dict, Tuple -from langchain.chains.query_constructor.ir import ( +from langchain_core.structured_query import ( Comparator, Comparison, Operation, Operator, StructuredQuery, ) + from langchain.retrievers.self_query.chroma import ChromaTranslator DEFAULT_TRANSLATOR = ChromaTranslator() diff --git a/libs/langchain/tests/unit_tests/retrievers/self_query/test_dashvector.py b/libs/langchain/tests/unit_tests/retrievers/self_query/test_dashvector.py index 137de85fdc0..29c50c36f02 100644 --- a/libs/langchain/tests/unit_tests/retrievers/self_query/test_dashvector.py +++ b/libs/langchain/tests/unit_tests/retrievers/self_query/test_dashvector.py @@ -1,13 +1,13 @@ from typing import Any, Tuple import pytest - -from langchain.chains.query_constructor.ir import ( +from langchain_core.structured_query import ( Comparator, Comparison, Operation, Operator, ) + from langchain.retrievers.self_query.dashvector import DashvectorTranslator DEFAULT_TRANSLATOR = DashvectorTranslator() diff --git a/libs/langchain/tests/unit_tests/retrievers/self_query/test_databricks_vector_search.py b/libs/langchain/tests/unit_tests/retrievers/self_query/test_databricks_vector_search.py index 8d5937ab9d5..4b1728ce41a 100644 --- a/libs/langchain/tests/unit_tests/retrievers/self_query/test_databricks_vector_search.py +++ b/libs/langchain/tests/unit_tests/retrievers/self_query/test_databricks_vector_search.py @@ -1,14 +1,14 @@ from typing import Any, Dict, Tuple import pytest - -from langchain.chains.query_constructor.ir import ( +from langchain_core.structured_query import ( Comparator, Comparison, Operation, Operator, StructuredQuery, ) + from langchain.retrievers.self_query.databricks_vector_search import ( DatabricksVectorSearchTranslator, ) diff --git a/libs/langchain/tests/unit_tests/retrievers/self_query/test_deeplake.py b/libs/langchain/tests/unit_tests/retrievers/self_query/test_deeplake.py index 055d434d301..bbc61f7bdea 100644 --- a/libs/langchain/tests/unit_tests/retrievers/self_query/test_deeplake.py +++ b/libs/langchain/tests/unit_tests/retrievers/self_query/test_deeplake.py @@ -1,12 +1,13 @@ from typing import Dict, Tuple -from langchain.chains.query_constructor.ir import ( +from langchain_core.structured_query import ( Comparator, Comparison, Operation, Operator, StructuredQuery, ) + from langchain.retrievers.self_query.deeplake import DeepLakeTranslator DEFAULT_TRANSLATOR = DeepLakeTranslator() diff --git a/libs/langchain/tests/unit_tests/retrievers/self_query/test_dingo.py b/libs/langchain/tests/unit_tests/retrievers/self_query/test_dingo.py index fa6e52b37fa..b853ff081f1 100644 --- a/libs/langchain/tests/unit_tests/retrievers/self_query/test_dingo.py +++ b/libs/langchain/tests/unit_tests/retrievers/self_query/test_dingo.py @@ -1,12 +1,13 @@ from typing import Dict, Tuple -from langchain.chains.query_constructor.ir import ( +from langchain_core.structured_query import ( Comparator, Comparison, Operation, Operator, StructuredQuery, ) + from langchain.retrievers.self_query.dingo import DingoDBTranslator DEFAULT_TRANSLATOR = DingoDBTranslator() diff --git a/libs/langchain/tests/unit_tests/retrievers/self_query/test_elasticsearch.py b/libs/langchain/tests/unit_tests/retrievers/self_query/test_elasticsearch.py index 519f366f031..56a03283773 100644 --- a/libs/langchain/tests/unit_tests/retrievers/self_query/test_elasticsearch.py +++ b/libs/langchain/tests/unit_tests/retrievers/self_query/test_elasticsearch.py @@ -1,12 +1,13 @@ from typing import Dict, Tuple -from langchain.chains.query_constructor.ir import ( +from langchain_core.structured_query import ( Comparator, Comparison, Operation, Operator, StructuredQuery, ) + from langchain.retrievers.self_query.elasticsearch import ElasticsearchTranslator DEFAULT_TRANSLATOR = ElasticsearchTranslator() diff --git a/libs/langchain/tests/unit_tests/retrievers/self_query/test_milvus.py b/libs/langchain/tests/unit_tests/retrievers/self_query/test_milvus.py index 4a96c18e274..9e5e994908d 100644 --- a/libs/langchain/tests/unit_tests/retrievers/self_query/test_milvus.py +++ b/libs/langchain/tests/unit_tests/retrievers/self_query/test_milvus.py @@ -1,14 +1,14 @@ from typing import Any, Dict, Tuple import pytest - -from langchain.chains.query_constructor.ir import ( +from langchain_core.structured_query import ( Comparator, Comparison, Operation, Operator, StructuredQuery, ) + from langchain.retrievers.self_query.milvus import MilvusTranslator DEFAULT_TRANSLATOR = MilvusTranslator() diff --git a/libs/langchain/tests/unit_tests/retrievers/self_query/test_mongodb_atlas.py b/libs/langchain/tests/unit_tests/retrievers/self_query/test_mongodb_atlas.py index 9eceec6b70f..6827c566837 100644 --- a/libs/langchain/tests/unit_tests/retrievers/self_query/test_mongodb_atlas.py +++ b/libs/langchain/tests/unit_tests/retrievers/self_query/test_mongodb_atlas.py @@ -1,12 +1,13 @@ from typing import Dict, Tuple -from langchain.chains.query_constructor.ir import ( +from langchain_core.structured_query import ( Comparator, Comparison, Operation, Operator, StructuredQuery, ) + from langchain.retrievers.self_query.mongodb_atlas import MongoDBAtlasTranslator DEFAULT_TRANSLATOR = MongoDBAtlasTranslator() diff --git a/libs/langchain/tests/unit_tests/retrievers/self_query/test_myscale.py b/libs/langchain/tests/unit_tests/retrievers/self_query/test_myscale.py index ce54c83349d..ca8b878ea86 100644 --- a/libs/langchain/tests/unit_tests/retrievers/self_query/test_myscale.py +++ b/libs/langchain/tests/unit_tests/retrievers/self_query/test_myscale.py @@ -1,14 +1,14 @@ from typing import Any, Dict, Tuple import pytest - -from langchain.chains.query_constructor.ir import ( +from langchain_core.structured_query import ( Comparator, Comparison, Operation, Operator, StructuredQuery, ) + from langchain.retrievers.self_query.myscale import MyScaleTranslator DEFAULT_TRANSLATOR = MyScaleTranslator() diff --git a/libs/langchain/tests/unit_tests/retrievers/self_query/test_opensearch.py b/libs/langchain/tests/unit_tests/retrievers/self_query/test_opensearch.py index 93b6629ecb0..0b18f1180ec 100644 --- a/libs/langchain/tests/unit_tests/retrievers/self_query/test_opensearch.py +++ b/libs/langchain/tests/unit_tests/retrievers/self_query/test_opensearch.py @@ -1,10 +1,11 @@ -from langchain.chains.query_constructor.ir import ( +from langchain_core.structured_query import ( Comparator, Comparison, Operation, Operator, StructuredQuery, ) + from langchain.retrievers.self_query.opensearch import OpenSearchTranslator DEFAULT_TRANSLATOR = OpenSearchTranslator() diff --git a/libs/langchain/tests/unit_tests/retrievers/self_query/test_pgvector.py b/libs/langchain/tests/unit_tests/retrievers/self_query/test_pgvector.py index 451508bdab3..43bdae89499 100644 --- a/libs/langchain/tests/unit_tests/retrievers/self_query/test_pgvector.py +++ b/libs/langchain/tests/unit_tests/retrievers/self_query/test_pgvector.py @@ -1,14 +1,14 @@ from typing import Dict, Tuple import pytest as pytest - -from langchain.chains.query_constructor.ir import ( +from langchain_core.structured_query import ( Comparator, Comparison, Operation, Operator, StructuredQuery, ) + from langchain.retrievers.self_query.pgvector import PGVectorTranslator DEFAULT_TRANSLATOR = PGVectorTranslator() diff --git a/libs/langchain/tests/unit_tests/retrievers/self_query/test_pinecone.py b/libs/langchain/tests/unit_tests/retrievers/self_query/test_pinecone.py index 7e818dcec5b..cf175667b34 100644 --- a/libs/langchain/tests/unit_tests/retrievers/self_query/test_pinecone.py +++ b/libs/langchain/tests/unit_tests/retrievers/self_query/test_pinecone.py @@ -1,12 +1,13 @@ from typing import Dict, Tuple -from langchain.chains.query_constructor.ir import ( +from langchain_core.structured_query import ( Comparator, Comparison, Operation, Operator, StructuredQuery, ) + from langchain.retrievers.self_query.pinecone import PineconeTranslator DEFAULT_TRANSLATOR = PineconeTranslator() diff --git a/libs/langchain/tests/unit_tests/retrievers/self_query/test_redis.py b/libs/langchain/tests/unit_tests/retrievers/self_query/test_redis.py index 490e247f93f..44801f6d8e1 100644 --- a/libs/langchain/tests/unit_tests/retrievers/self_query/test_redis.py +++ b/libs/langchain/tests/unit_tests/retrievers/self_query/test_redis.py @@ -13,14 +13,14 @@ from langchain_community.vectorstores.redis.schema import ( TagFieldSchema, TextFieldSchema, ) - -from langchain.chains.query_constructor.ir import ( +from langchain_core.structured_query import ( Comparator, Comparison, Operation, Operator, StructuredQuery, ) + from langchain.retrievers.self_query.redis import RedisTranslator diff --git a/libs/langchain/tests/unit_tests/retrievers/self_query/test_supabase.py b/libs/langchain/tests/unit_tests/retrievers/self_query/test_supabase.py index de9b04fabf8..8fc45dd2ee1 100644 --- a/libs/langchain/tests/unit_tests/retrievers/self_query/test_supabase.py +++ b/libs/langchain/tests/unit_tests/retrievers/self_query/test_supabase.py @@ -1,12 +1,13 @@ from typing import Dict, Tuple -from langchain.chains.query_constructor.ir import ( +from langchain_core.structured_query import ( Comparator, Comparison, Operation, Operator, StructuredQuery, ) + from langchain.retrievers.self_query.supabase import SupabaseVectorTranslator DEFAULT_TRANSLATOR = SupabaseVectorTranslator() diff --git a/libs/langchain/tests/unit_tests/retrievers/self_query/test_tencentvectordb.py b/libs/langchain/tests/unit_tests/retrievers/self_query/test_tencentvectordb.py index a634689caad..d7ee4a8c301 100644 --- a/libs/langchain/tests/unit_tests/retrievers/self_query/test_tencentvectordb.py +++ b/libs/langchain/tests/unit_tests/retrievers/self_query/test_tencentvectordb.py @@ -1,10 +1,11 @@ -from langchain.chains.query_constructor.ir import ( +from langchain_core.structured_query import ( Comparator, Comparison, Operation, Operator, StructuredQuery, ) + from langchain.retrievers.self_query.tencentvectordb import TencentVectorDBTranslator diff --git a/libs/langchain/tests/unit_tests/retrievers/self_query/test_timescalevector.py b/libs/langchain/tests/unit_tests/retrievers/self_query/test_timescalevector.py index 35dd328e06a..e813d63e2ed 100644 --- a/libs/langchain/tests/unit_tests/retrievers/self_query/test_timescalevector.py +++ b/libs/langchain/tests/unit_tests/retrievers/self_query/test_timescalevector.py @@ -1,14 +1,14 @@ from typing import Dict, Tuple import pytest as pytest - -from langchain.chains.query_constructor.ir import ( +from langchain_core.structured_query import ( Comparator, Comparison, Operation, Operator, StructuredQuery, ) + from langchain.retrievers.self_query.timescalevector import TimescaleVectorTranslator DEFAULT_TRANSLATOR = TimescaleVectorTranslator() diff --git a/libs/langchain/tests/unit_tests/retrievers/self_query/test_vectara.py b/libs/langchain/tests/unit_tests/retrievers/self_query/test_vectara.py index 05c15f26ac7..fe41cdb2148 100644 --- a/libs/langchain/tests/unit_tests/retrievers/self_query/test_vectara.py +++ b/libs/langchain/tests/unit_tests/retrievers/self_query/test_vectara.py @@ -1,12 +1,13 @@ from typing import Dict, Tuple -from langchain.chains.query_constructor.ir import ( +from langchain_core.structured_query import ( Comparator, Comparison, Operation, Operator, StructuredQuery, ) + from langchain.retrievers.self_query.vectara import VectaraTranslator DEFAULT_TRANSLATOR = VectaraTranslator() diff --git a/libs/langchain/tests/unit_tests/retrievers/self_query/test_weaviate.py b/libs/langchain/tests/unit_tests/retrievers/self_query/test_weaviate.py index a6489a203aa..999c7c6fb8e 100644 --- a/libs/langchain/tests/unit_tests/retrievers/self_query/test_weaviate.py +++ b/libs/langchain/tests/unit_tests/retrievers/self_query/test_weaviate.py @@ -1,12 +1,13 @@ from typing import Dict, Tuple -from langchain.chains.query_constructor.ir import ( +from langchain_core.structured_query import ( Comparator, Comparison, Operation, Operator, StructuredQuery, ) + from langchain.retrievers.self_query.weaviate import WeaviateTranslator DEFAULT_TRANSLATOR = WeaviateTranslator()