mirror of
https://github.com/hwchase17/langchain.git
synced 2025-07-06 21:20:33 +00:00
langchain-qdrant[patch]: Add ruff bandit rules to linter (#31815)
- Add ruff bandit rules - Address a few s101s - Some formatting
This commit is contained in:
parent
b03e326231
commit
86a698d1b6
@ -191,14 +191,14 @@ class QdrantVectorStore(VectorStore):
|
||||
"""Initialize a new instance of `QdrantVectorStore`.
|
||||
|
||||
Example:
|
||||
.. code-block:: python
|
||||
qdrant = Qdrant(
|
||||
client=client,
|
||||
collection_name="my-collection",
|
||||
embedding=OpenAIEmbeddings(),
|
||||
retrieval_mode=RetrievalMode.HYBRID,
|
||||
sparse_embedding=FastEmbedSparse(),
|
||||
)
|
||||
.. code-block:: python
|
||||
qdrant = Qdrant(
|
||||
client=client,
|
||||
collection_name="my-collection",
|
||||
embedding=OpenAIEmbeddings(),
|
||||
retrieval_mode=RetrievalMode.HYBRID,
|
||||
sparse_embedding=FastEmbedSparse(),
|
||||
)
|
||||
"""
|
||||
if validate_embeddings:
|
||||
self._validate_embeddings(retrieval_mode, embedding, sparse_embedding)
|
||||
@ -230,7 +230,7 @@ class QdrantVectorStore(VectorStore):
|
||||
"""Get the Qdrant client instance that is being used.
|
||||
|
||||
Returns:
|
||||
QdrantClient: An instance of `QdrantClient`.
|
||||
QdrantClient: An instance of ``QdrantClient``.
|
||||
"""
|
||||
return self._client
|
||||
|
||||
@ -239,10 +239,10 @@ class QdrantVectorStore(VectorStore):
|
||||
"""Get the dense embeddings instance that is being used.
|
||||
|
||||
Raises:
|
||||
ValueError: If embeddings are `None`.
|
||||
ValueError: If embeddings are ``None``.
|
||||
|
||||
Returns:
|
||||
Embeddings: An instance of `Embeddings`.
|
||||
Embeddings: An instance of ``Embeddings``.
|
||||
"""
|
||||
if self._embeddings is None:
|
||||
raise ValueError(
|
||||
@ -255,10 +255,10 @@ class QdrantVectorStore(VectorStore):
|
||||
"""Get the sparse embeddings instance that is being used.
|
||||
|
||||
Raises:
|
||||
ValueError: If sparse embeddings are `None`.
|
||||
ValueError: If sparse embeddings are ``None``.
|
||||
|
||||
Returns:
|
||||
SparseEmbeddings: An instance of `SparseEmbeddings`.
|
||||
SparseEmbeddings: An instance of ``SparseEmbeddings``.
|
||||
"""
|
||||
if self._sparse_embeddings is None:
|
||||
raise ValueError(
|
||||
@ -302,7 +302,7 @@ class QdrantVectorStore(VectorStore):
|
||||
validate_collection_config: bool = True,
|
||||
**kwargs: Any,
|
||||
) -> QdrantVectorStore:
|
||||
"""Construct an instance of `QdrantVectorStore` from a list of texts.
|
||||
"""Construct an instance of ``QdrantVectorStore`` from a list of texts.
|
||||
|
||||
This is a user-friendly interface that:
|
||||
1. Creates embeddings, one for each text
|
||||
@ -382,11 +382,11 @@ class QdrantVectorStore(VectorStore):
|
||||
validate_collection_config: bool = True,
|
||||
**kwargs: Any,
|
||||
) -> QdrantVectorStore:
|
||||
"""Construct an instance of `QdrantVectorStore` from an existing collection
|
||||
"""Construct an instance of ``QdrantVectorStore`` from an existing collection
|
||||
without adding any data.
|
||||
|
||||
Returns:
|
||||
QdrantVectorStore: A new instance of `QdrantVectorStore`.
|
||||
QdrantVectorStore: A new instance of ``QdrantVectorStore``.
|
||||
"""
|
||||
client = QdrantClient(
|
||||
location=location,
|
||||
@ -660,7 +660,6 @@ class QdrantVectorStore(VectorStore):
|
||||
Maximal marginal relevance optimizes for similarity to query AND diversity
|
||||
among selected documents.
|
||||
|
||||
|
||||
Returns:
|
||||
List of Documents selected by maximal marginal relevance.
|
||||
"""
|
||||
@ -911,16 +910,16 @@ class QdrantVectorStore(VectorStore):
|
||||
|
||||
@staticmethod
|
||||
def _cosine_relevance_score_fn(distance: float) -> float:
|
||||
"""Normalize the distance to a score on a scale [0, 1]."""
|
||||
"""Normalize the distance to a score on a scale ``[0, 1]``."""
|
||||
return (distance + 1.0) / 2.0
|
||||
|
||||
def _select_relevance_score_fn(self) -> Callable[[float], float]:
|
||||
"""
|
||||
The 'correct' relevance function
|
||||
may differ depending on a few things, including:
|
||||
- the distance / similarity metric used by the VectorStore
|
||||
- the scale of your embeddings (OpenAI's are unit normed. Many others are not!)
|
||||
- embedding dimensionality
|
||||
The "correct" relevance function may differ depending on a few things,
|
||||
including:
|
||||
- The distance / similarity metric used by the VectorStore
|
||||
- The scale of your embeddings (OpenAI's are unit normed. Many others are not!)
|
||||
- Embedding dimensionality
|
||||
- etc.
|
||||
"""
|
||||
|
||||
@ -1039,9 +1038,10 @@ class QdrantVectorStore(VectorStore):
|
||||
dense_embeddings = self.embeddings.embed_documents(list(texts))
|
||||
sparse_embeddings = self.sparse_embeddings.embed_documents(list(texts))
|
||||
|
||||
assert len(dense_embeddings) == len(
|
||||
sparse_embeddings
|
||||
), "Mismatched length between dense and sparse embeddings."
|
||||
if len(dense_embeddings) != len(sparse_embeddings):
|
||||
raise ValueError(
|
||||
"Mismatched length between dense and sparse embeddings."
|
||||
)
|
||||
|
||||
return [
|
||||
{
|
||||
@ -1128,7 +1128,8 @@ class QdrantVectorStore(VectorStore):
|
||||
"set `force_recreate` to `True`."
|
||||
)
|
||||
|
||||
assert vector_config is not None, "VectorParams is None"
|
||||
if vector_config is None:
|
||||
raise ValueError("VectorParams is None")
|
||||
|
||||
if isinstance(dense_embeddings, Embeddings):
|
||||
vector_size = len(dense_embeddings.embed_documents(["dummy_text"])[0])
|
||||
|
@ -105,7 +105,7 @@ class Qdrant(VectorStore):
|
||||
|
||||
if embeddings is None and embedding_function is None:
|
||||
raise ValueError(
|
||||
"`embeddings` value can't be None. Pass `Embeddings` instance."
|
||||
"`embeddings` value can't be None. Pass `embeddings` instance."
|
||||
)
|
||||
|
||||
if embeddings is not None and embedding_function is not None:
|
||||
@ -161,7 +161,7 @@ class Qdrant(VectorStore):
|
||||
uuid-like strings.
|
||||
batch_size:
|
||||
How many vectors upload per-request.
|
||||
Default: 64
|
||||
Default: ``64``
|
||||
|
||||
Returns:
|
||||
List of ids from adding the texts into the vectorstore.
|
||||
@ -196,7 +196,7 @@ class Qdrant(VectorStore):
|
||||
uuid-like strings.
|
||||
batch_size:
|
||||
How many vectors upload per-request.
|
||||
Default: 64
|
||||
Default: ``64``
|
||||
|
||||
Returns:
|
||||
List of ids from adding the texts into the vectorstore.
|
||||
@ -1669,10 +1669,11 @@ class Qdrant(VectorStore):
|
||||
f"`None`. If you want to recreate the collection, set "
|
||||
f"`force_recreate` parameter to `True`."
|
||||
)
|
||||
assert isinstance(current_vector_config, models.VectorParams), (
|
||||
"Expected current_vector_config to be an instance of "
|
||||
f"models.VectorParams, but got {type(current_vector_config)}"
|
||||
)
|
||||
if not isinstance(current_vector_config, models.VectorParams):
|
||||
raise ValueError(
|
||||
"Expected current_vector_config to be an instance of "
|
||||
f"models.VectorParams, but got {type(current_vector_config)}"
|
||||
)
|
||||
# Check if the vector configuration has the same dimensionality.
|
||||
if current_vector_config.size != vector_size:
|
||||
raise QdrantException(
|
||||
@ -1829,11 +1830,11 @@ class Qdrant(VectorStore):
|
||||
f"`None`. If you want to recreate the collection, set "
|
||||
f"`force_recreate` parameter to `True`."
|
||||
)
|
||||
|
||||
assert isinstance(current_vector_config, models.VectorParams), (
|
||||
"Expected current_vector_config to be an instance of "
|
||||
f"models.VectorParams, but got {type(current_vector_config)}"
|
||||
)
|
||||
if not isinstance(current_vector_config, models.VectorParams):
|
||||
raise ValueError(
|
||||
"Expected current_vector_config to be an instance of "
|
||||
f"models.VectorParams, but got {type(current_vector_config)}"
|
||||
)
|
||||
|
||||
# Check if the vector configuration has the same dimensionality.
|
||||
if current_vector_config.size != vector_size:
|
||||
|
@ -51,7 +51,7 @@ langchain-core = { path = "../../core", editable = true }
|
||||
target-version = "py39"
|
||||
|
||||
[tool.ruff.lint]
|
||||
select = ["E", "F", "I", "T201", "UP"]
|
||||
select = ["E", "F", "I", "T201", "UP", "S"]
|
||||
ignore = [ "UP007", ]
|
||||
|
||||
[tool.mypy]
|
||||
@ -67,3 +67,9 @@ markers = [
|
||||
"compile: mark placeholder test used to compile integration tests without running them",
|
||||
]
|
||||
asyncio_mode = "auto"
|
||||
|
||||
[tool.ruff.lint.extend-per-file-ignores]
|
||||
"tests/**/*.py" = [
|
||||
"S101", # Tests need assertions
|
||||
"S311", # Standard pseudo-random generators are not suitable for cryptographic purposes
|
||||
]
|
||||
|
Loading…
Reference in New Issue
Block a user