Incrustaciones, también conocidas como vectores de características, son la forma nativa en que la inteligencia artificial representa cualquier tipo de datos, lo que las hace adecuadas para su uso con varias herramientas y algoritmos de IA. Pueden representar texto, imágenes, así como audio y video. Existen muchas opciones para generar datos de vectores de características, incluyendo el uso de modelos de incrustación de texto de código abierto o llamando a APIs de servicios en la nube.
Chroma proporciona un envoltorio ligero para modelos de incrustación populares, lo que facilita su uso en sus aplicaciones. Al crear una colección de Chroma, puede establecer una función de incrustación que calculará automáticamente vectores de texto al guardar y actualizar datos de texto.
Nota: También puede optar por no utilizar la función de incrustación encapsulada de Chroma para calcular vectores. Puede seleccionar cualquier modelo de incrustación para precalcular datos de vectores de texto.
Para obtener la función de incrustación de Chroma, importe el módulo embedding_functions
de chromadb.utils
.
from chromadb.utils import embedding_functions
Modelo predeterminado: all-MiniLM-L6-v2
Por defecto, Chroma utiliza el modelo all-MiniLM-L6-v2 de Sentence Transformers para calcular vectores. Este modelo de incrustación puede crear vectores de oraciones y documentos. La funcionalidad de este modelo de incrustación se ejecuta en la máquina local y requiere la descarga de los archivos del modelo (lo cual se realiza automáticamente).
default_ef = embedding_functions.DefaultEmbeddingFunction()
Modelo de Transformers
Chroma también puede usar cualquier modelo de Sentence Transformers para calcular vectores.
sentence_transformer_ef = embedding_functions.SentenceTransformerEmbeddingFunction(model_name="all-MiniLM-L6-v2")
Puede pasar un parámetro model_name
opcional para elegir el modelo de Sentence Transformers que desea utilizar. Por defecto, Chroma utiliza all-MiniLM-L6-v2. Puede buscar nombres de modelos en Hugging Face.
Modelo de OpenAI
Chroma proporciona un envoltorio conveniente para la API de incrustación de OpenAI. Esto requiere llamar a la interfaz de OpenAI y una clave API. Puede obtener una clave API registrándose en una cuenta de OpenAI.
Esta función de incrustación depende del paquete openai
para Python, que se puede instalar usando pip install openai
.
openai_ef = embedding_functions.OpenAIEmbeddingFunction(
api_key="TU_CLAVE_API",
model_name="text-embedding-ada-002"
)
Para utilizar el modelo de incrustación de OpenAI en plataformas como Azure, puede usar los parámetros api_base
y api_type
:
openai_ef = embedding_functions.OpenAIEmbeddingFunction(
api_key="TU_CLAVE_API",
api_base="TU_RUTA_BASE_API",
api_type="azure",
model_name="text-embedding-ada-002"
)
Función de incrustación personalizada
Puede crear su propia función de incrustación para trabajar con Chroma simplemente implementando los métodos de la clase base EmbeddingFunction
.
from chromadb.api.types import Documents, EmbeddingFunction, Embeddings
class MyEmbeddingFunction(EmbeddingFunction):
def __call__(self, texts: Documents) -> Embeddings:
return embeddings