add_texts() — langchain Function Reference
Architecture documentation for the add_texts() function in vectorstores.py from the langchain codebase.
Entity Profile
Dependency Diagram
graph TD c6cde3f6_740c_9c74_569c_bdc91a7bd836["add_texts()"] d25f9e94_3ec0_b9ca_7d2f_eb7ef487ccab["Chroma"] c6cde3f6_740c_9c74_569c_bdc91a7bd836 -->|defined in| d25f9e94_3ec0_b9ca_7d2f_eb7ef487ccab 8333d70f_d25a_107c_0310_d6f0ca8ca56e["from_texts()"] 8333d70f_d25a_107c_0310_d6f0ca8ca56e -->|calls| c6cde3f6_740c_9c74_569c_bdc91a7bd836 style c6cde3f6_740c_9c74_569c_bdc91a7bd836 fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
libs/partners/chroma/langchain_chroma/vectorstores.py lines 597–682
def add_texts(
self,
texts: Iterable[str],
metadatas: list[dict] | None = None,
ids: list[str] | None = None,
**kwargs: Any,
) -> list[str]:
"""Run more texts through the embeddings and add to the `VectorStore`.
Args:
texts: Texts to add to the `VectorStore`.
metadatas: Optional list of metadatas.
When querying, you can filter on this metadata.
ids: Optional list of IDs. (Items without IDs will be assigned UUIDs)
kwargs: Additional keyword arguments.
Returns:
List of IDs of the added texts.
Raises:
ValueError: When metadata is incorrect.
"""
if ids is None:
ids = [str(uuid.uuid4()) for _ in texts]
else:
ids = [id_ if id_ is not None else str(uuid.uuid4()) for id_ in ids]
embeddings = None
texts = list(texts)
if self._embedding_function is not None:
embeddings = self._embedding_function.embed_documents(texts)
if metadatas:
# fill metadatas with empty dicts if somebody
# did not specify metadata for all texts
length_diff = len(texts) - len(metadatas)
if length_diff:
metadatas = metadatas + [{}] * length_diff
empty_ids = []
non_empty_ids = []
for idx, m in enumerate(metadatas):
if m:
non_empty_ids.append(idx)
else:
empty_ids.append(idx)
if non_empty_ids:
metadatas = [metadatas[idx] for idx in non_empty_ids]
texts_with_metadatas = [texts[idx] for idx in non_empty_ids]
embeddings_with_metadatas = (
[embeddings[idx] for idx in non_empty_ids]
if embeddings is not None and len(embeddings) > 0
else None
)
ids_with_metadata = [ids[idx] for idx in non_empty_ids]
try:
self._collection.upsert(
metadatas=metadatas, # type: ignore[arg-type]
embeddings=embeddings_with_metadatas, # type: ignore[arg-type]
documents=texts_with_metadatas,
ids=ids_with_metadata,
)
except ValueError as e:
if "Expected metadata value to be" in str(e):
msg = (
"Try filtering complex metadata from the document using "
"langchain_community.vectorstores.utils.filter_complex_metadata."
)
raise ValueError(e.args[0] + "\n\n" + msg) from e
raise e
if empty_ids:
texts_without_metadatas = [texts[j] for j in empty_ids]
embeddings_without_metadatas = (
[embeddings[j] for j in empty_ids] if embeddings else None
)
ids_without_metadatas = [ids[j] for j in empty_ids]
self._collection.upsert(
embeddings=embeddings_without_metadatas, # type: ignore[arg-type]
documents=texts_without_metadatas,
ids=ids_without_metadatas,
)
else:
self._collection.upsert(
Domain
Subdomains
Called By
Source
Frequently Asked Questions
What does add_texts() do?
add_texts() is a function in the langchain codebase, defined in libs/partners/chroma/langchain_chroma/vectorstores.py.
Where is add_texts() defined?
add_texts() is defined in libs/partners/chroma/langchain_chroma/vectorstores.py at line 597.
What calls add_texts()?
add_texts() is called by 1 function(s): from_texts.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free