Esta biblioteca de Python proporciona un conjunto de métodos avanzados para agregar múltiples incrustaciones asociadas con un solo documento o entidad en una sola incrustación representativa. Admite una amplia gama de técnicas de agregación, desde un promedio simple hasta métodos sofisticados como PCA y acumulación de atención.
Para instalar el paquete, puede usar PIP:
pip install faiss_vector_aggregatorA continuación se presentan ejemplos que demuestran cómo usar la biblioteca para agregar incrustaciones utilizando diferentes métodos.
Supongamos que tiene una colección de incrustaciones almacenadas en un índice FAISS, y desea agregarlos mediante sus ID de documentos asociadas utilizando un promedio simple.
from faiss_vector_aggregator import aggregate_embeddings
# Aggregate embeddings using simple averaging
aggregate_embeddings (
input_folder = "data/input" ,
column_name = "id" ,
output_folder = "data/output" ,
method = "average"
)input_folder : ruta a la carpeta que contiene el índice de entrada FAISS y los metadatos.column_name : el campo de metadatos para agregar incrustaciones (por ejemplo, 'id' ).output_folder : ruta donde se guardará el índice de salida FAISS y los metadatos.method="average" : especifica el método de agregación.Si tiene diferentes pesos para los incrustaciones, puede aplicar un promedio ponderado para dar más importancia a ciertas incrustaciones.
from faiss_vector_aggregator import aggregate_embeddings
# Example weights for the embeddings
weights = [ 0.1 , 0.3 , 0.6 ]
# Aggregate embeddings using weighted averaging
aggregate_embeddings (
input_folder = "data/input" ,
column_name = "id" ,
output_folder = "data/output" ,
method = "weighted_average" ,
weights = weights
)weights : una lista o una variedad de pesos correspondientes a cada incrustación.method="weighted_average" : Especifica el método promedio ponderado.Para reducir las integridades dimensionales a un solo vector representativo usando PCA:
from faiss_vector_aggregator import aggregate_embeddings
# Aggregate embeddings using PCA
aggregate_embeddings (
input_folder = "data/input" ,
column_name = "id" ,
output_folder = "data/output" ,
method = "pca"
)method="pca" : especifica que PCA debe usarse para la agregación.Use la agrupación de K-Means para encontrar el centroide de los incrustaciones para cada ID de documento.
from faiss_vector_aggregator import aggregate_embeddings
# Aggregate embeddings using K-Means clustering to find the centroid
aggregate_embeddings (
input_folder = "data/input" ,
column_name = "id" ,
output_folder = "data/output" ,
method = "centroid"
)method="centroid" : especifica que se debe usar la agrupación de K-means.Para usar un mecanismo de atención para agregar incrustaciones:
from faiss_vector_aggregator import aggregate_embeddings
# Aggregate embeddings using Attentive Pooling
aggregate_embeddings (
input_folder = "data/input" ,
column_name = "id" ,
output_folder = "data/output" ,
method = "attentive_pooling"
)method="attentive_pooling" : Especifica el método de agrupación de atención. A continuación se muestra una descripción detallada de cada método de agregación compatible con la biblioteca:
weights .trim_percentage .input_folder (STR): ruta a la carpeta que contiene el índice FAISS de entrada ( index.faiss ) y metadatos ( index.pkl ).column_name (str): el campo de metadatos para agregar incrustaciones (por ejemplo, 'id' ).output_folder (STR): ruta donde se guardará el índice FAISS de salida y los metadatos.method (STR): el método de agregación para usar. Las opciones incluyen:'average' , 'weighted_average' , 'geometric_mean' , 'harmonic_mean' , 'centroid' , 'pca' , 'median' , 'trimmed_mean' , 'max_pooling' , 'min_pooling' , 'entropy_weighted_average' , 'attentive_pooling' , 'tukeys_biweight' , 'exemplar' .weights (lista o np.ndarray, opcional): pesos para el método weighted_average .trim_percentage (flotante, opcional): fracción para recortar desde cada extremo para trimmed_mean . Debe estar entre 0 y menos de 0.5.weights (lista o np.ndarray, opcional): pesos para el método weighted_average . Asegúrese de tener los siguientes paquetes instalados:
Puede instalar las dependencias usando:
pip install faiss-cpu numpy scipy scikit-learn langchain Nota: Reemplace faiss-cpu con faiss-gpu si prefiere usar la versión GPU de FAISS.
¡Las contribuciones son bienvenidas! No dude en enviar una solicitud de extracción o abrir un problema en el repositorio de GitHub.
Al contribuir, asegúrese de que su código se adhiera a las siguientes pautas:
Este proyecto tiene licencia bajo la licencia MIT. Consulte el archivo de licencia para obtener más detalles.
FAISS Vector de Langchain. Asegúrese de que sus incrustaciones e índices se manejen de manera consistente cuando se integren con Langchain.