From 2f682e1564ce20204bbcd40fc86f6ac5017a585f Mon Sep 17 00:00:00 2001 From: Lorenze Jay <63378463+lorenzejay@users.noreply.github.com> Date: Thu, 18 Sep 2025 14:50:35 -0700 Subject: [PATCH] feat: update ChromaDB embedding function to use OpenAI API (#3538) - Refactor the default embedding function to utilize OpenAI's embedding function with API key support. - Import necessary OpenAI embedding function and configure it with the environment variable for the API key. - Ensure compatibility with existing ChromaDB configuration model. --- src/crewai/rag/chromadb/config.py | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/crewai/rag/chromadb/config.py b/src/crewai/rag/chromadb/config.py index 033f8ff32..54908c6b7 100644 --- a/src/crewai/rag/chromadb/config.py +++ b/src/crewai/rag/chromadb/config.py @@ -1,11 +1,11 @@ """ChromaDB configuration model.""" +import os import warnings from dataclasses import field from typing import Literal, cast from chromadb.config import Settings -from chromadb.utils.embedding_functions import DefaultEmbeddingFunction from pydantic.dataclasses import dataclass as pyd_dataclass from crewai.rag.chromadb.constants import ( @@ -49,7 +49,17 @@ def _default_embedding_function() -> ChromaEmbeddingFunctionWrapper: Returns: Default embedding function using all-MiniLM-L6-v2 via ONNX. """ - return cast(ChromaEmbeddingFunctionWrapper, DefaultEmbeddingFunction()) + from chromadb.utils.embedding_functions.openai_embedding_function import ( + OpenAIEmbeddingFunction, + ) + + return cast( + ChromaEmbeddingFunctionWrapper, + OpenAIEmbeddingFunction( + api_key=os.getenv("OPENAI_API_KEY"), + model_name="text-embedding-3-small", + ), + ) @pyd_dataclass(frozen=True)