Эта библиотека Python предоставляет набор передовых методов для агрегирования нескольких встроений, связанных с одним документом или сущностью, в единое репрезентативное внедрение. Он поддерживает широкий спектр методов агрегации, от простого усреднения до сложных методов, таких как PCA и внимательный пул.
Чтобы установить пакет, вы можете использовать PIP:
pip install faiss_vector_aggregatorНиже приведены примеры, демонстрирующие, как использовать библиотеку для агрегирования встроений с использованием различных методов.
Предположим, у вас есть коллекция встроенных введений, хранящихся в индексе FAISS, и вы хотите агрегировать их по связанным идентификаторам документов, используя простое усреднение.
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 : путь к папке, содержащей входной индекс FAISS и метаданные.column_name : поле метаданных, с помощью которого можно агрегировать внедрения (например, 'id' ).output_folder : путь, где будут сохранены выходной индекс и метаданные.method="average" : указывает метод агрегации.Если у вас есть разные веса для встраиваний, вы можете применить средневзвешенное значение, чтобы придать большее значение определенным вставкам.
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 : список или массив весов, соответствующих каждому внедрению.method="weighted_average" : указывает средний метод.Чтобы уменьшить высокомерные встраиваемые до одного репрезентативного вектора с использованием 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" : указывает, что PCA следует использовать для агрегации.Используйте кластеризацию K-средних, чтобы найти центроид встраиваний для каждого идентификатора документа.
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" : указывает, что K-средняя кластеризация должна использоваться.Чтобы использовать механизм внимания для агрегирования внедрения:
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" : указывает внимательный метод объединения. Ниже приведено подробное описание каждого метода агрегации, поддерживаемого библиотекой:
weights .trim_percentage .input_folder (str): путь к папке, содержащей индекс входа Faiss ( index.faiss ) и метаданные ( index.pkl ).column_name (str): поле метаданных, с помощью которого можно агрегировать внедрения (например, 'id' ).output_folder (str): путь, в котором будут сохранены выходной индекс и метаданные.method (Str): метод агрегации для использования. Варианты включают:'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 (список или NP.NDarray, необязательно): веса для метода weighted_average .trim_percentage (float, необязательно): дробь для обрезки с каждого конца для trimmed_mean . Должно быть между 0 и менее 0,5.weights (список или NP.NDarray, необязательно): веса для метода weighted_average . Убедитесь, что у вас установлены следующие пакеты:
Вы можете установить зависимости, используя:
pip install faiss-cpu numpy scipy scikit-learn langchain ПРИМЕЧАНИЕ. Замените faiss-cpu на faiss-gpu если вы предпочитаете использовать версию GPU Faiss.
Взносы приветствуются! Пожалуйста, не стесняйтесь отправлять запрос на привлечение или открыть проблему в репозитории GitHub.
При вклад, пожалуйста, убедитесь, что ваш код придерживается следующих рекомендаций:
Этот проект лицензирован по лицензии MIT. Смотрите файл лицензии для получения подробной информации.
FAISS 's Langchain. Убедитесь, что ваши встраивания и индексы обрабатываются последовательно при интеграции с Langchain.