Home / Function/ _validate_collection_for_dense() — langchain Function Reference

_validate_collection_for_dense() — langchain Function Reference

Architecture documentation for the _validate_collection_for_dense() function in qdrant.py from the langchain codebase.

Entity Profile

Dependency Diagram

graph TD
  ee735a53_d6e2_76d0_6fad_19bdebf2f0f2["_validate_collection_for_dense()"]
  671b47a0_cdd3_a89d_e90f_0631a4bd67d3["QdrantVectorStore"]
  ee735a53_d6e2_76d0_6fad_19bdebf2f0f2 -->|defined in| 671b47a0_cdd3_a89d_e90f_0631a4bd67d3
  3b9e0613_eecd_e688_0717_98be6124f6d3["similarity_search_with_score_by_vector()"]
  3b9e0613_eecd_e688_0717_98be6124f6d3 -->|calls| ee735a53_d6e2_76d0_6fad_19bdebf2f0f2
  6c0af82c_cb1f_821f_efa9_a3c7b1a87425["max_marginal_relevance_search()"]
  6c0af82c_cb1f_821f_efa9_a3c7b1a87425 -->|calls| ee735a53_d6e2_76d0_6fad_19bdebf2f0f2
  f3995a8f_51a1_a376_2f6a_8d9f0f7797e6["_validate_collection_config()"]
  f3995a8f_51a1_a376_2f6a_8d9f0f7797e6 -->|calls| ee735a53_d6e2_76d0_6fad_19bdebf2f0f2
  style ee735a53_d6e2_76d0_6fad_19bdebf2f0f2 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

libs/partners/qdrant/langchain_qdrant/qdrant.py lines 1179–1249

    def _validate_collection_for_dense(
        cls: type[QdrantVectorStore],
        client: QdrantClient,
        collection_name: str,
        vector_name: str,
        distance: models.Distance,
        dense_embeddings: Embeddings | list[float] | None,
    ) -> None:
        collection_info = client.get_collection(collection_name=collection_name)
        vector_config = collection_info.config.params.vectors

        if isinstance(vector_config, dict):
            # vector_config is a Dict[str, VectorParams]
            if vector_name not in vector_config:
                msg = (
                    f"Existing Qdrant collection {collection_name} does not "
                    f"contain dense vector named {vector_name}. "
                    "Did you mean one of the "
                    f"existing vectors: {', '.join(vector_config.keys())}? "  # type: ignore[union-attr]
                    f"If you want to recreate the collection, set `force_recreate` "
                    f"parameter to `True`."
                )
                raise QdrantVectorStoreError(msg)

            # Get the VectorParams object for the specified vector_name
            vector_config = vector_config[vector_name]  # type: ignore[assignment, index]

        # vector_config is an instance of VectorParams
        # Case of a collection with single/unnamed vector.
        elif vector_name != "":
            msg = (
                f"Existing Qdrant collection {collection_name} is built "
                "with unnamed dense vector. "
                f"If you want to reuse it, set `vector_name` to ''(empty string)."
                f"If you want to recreate the collection, "
                "set `force_recreate` to `True`."
            )
            raise QdrantVectorStoreError(msg)

        if vector_config is None:
            msg = "VectorParams is None"
            raise ValueError(msg)

        if isinstance(dense_embeddings, Embeddings):
            vector_size = len(dense_embeddings.embed_documents(["dummy_text"])[0])
        elif isinstance(dense_embeddings, list):
            vector_size = len(dense_embeddings)
        else:
            msg = "Invalid `embeddings` type."
            raise TypeError(msg)

        if vector_config.size != vector_size:
            msg = (
                f"Existing Qdrant collection is configured for dense vectors with "
                f"{vector_config.size} dimensions. "
                f"Selected embeddings are {vector_size}-dimensional. "
                f"If you want to recreate the collection, set `force_recreate` "
                f"parameter to `True`."
            )
            raise QdrantVectorStoreError(msg)

        if vector_config.distance != distance:
            msg = (
                f"Existing Qdrant collection is configured for "
                f"{vector_config.distance.name} similarity, but requested "
                f"{distance.upper()}. Please set `distance` parameter to "
                f"`{vector_config.distance.name}` if you want to reuse it. "
                f"If you want to recreate the collection, set `force_recreate` "
                f"parameter to `True`."
            )
            raise QdrantVectorStoreError(msg)

Domain

Subdomains

Frequently Asked Questions

What does _validate_collection_for_dense() do?
_validate_collection_for_dense() is a function in the langchain codebase, defined in libs/partners/qdrant/langchain_qdrant/qdrant.py.
Where is _validate_collection_for_dense() defined?
_validate_collection_for_dense() is defined in libs/partners/qdrant/langchain_qdrant/qdrant.py at line 1179.
What calls _validate_collection_for_dense()?
_validate_collection_for_dense() is called by 3 function(s): _validate_collection_config, max_marginal_relevance_search, similarity_search_with_score_by_vector.

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free