diff --git a/langchain/vectorstores/weaviate.py b/langchain/vectorstores/weaviate.py index 16d5bc1573..5bee40b4e6 100644 --- a/langchain/vectorstores/weaviate.py +++ b/langchain/vectorstores/weaviate.py @@ -135,6 +135,12 @@ class Weaviate(VectorStore): from weaviate.util import get_valid_uuid ids = [] + embeddings: Optional[List[List[float]]] = None + if self._embedding: + if not isinstance(texts, list): + texts = list(texts) + embeddings = self._embedding.embed_documents(texts) + with self._client.batch as batch: for i, text in enumerate(texts): data_properties = {self._text_key: text} @@ -152,15 +158,11 @@ class Weaviate(VectorStore): elif "ids" in kwargs: _id = kwargs["ids"][i] - if self._embedding is not None: - vector = self._embedding.embed_documents([text])[0] - else: - vector = None batch.add_data_object( data_object=data_properties, class_name=self._index_name, uuid=_id, - vector=vector, + vector=embeddings[i] if embeddings else None, ) ids.append(_id) return ids