- Подготовить текст документа, очистить, нормализовать, удалить-стоп-слова, чтобы иметь возможность подсчитывать токены, как их подсчитывает Azure OpenAI ada-002.
- Токенизировать текст документа в слова, разделив его по пробелу (" ")
- Если токены документа превышают 8 КБ, разделите его на большее количество вложенных документов с максимальным количеством токенов 8 КБ.
- Передайте эти вложенные документы 8 КБ из конечной точки Azure OpenAI ada-002 и получить внедрения для каждого вложенного документа.
- Объедините эти внедрения с плавающей запятой (путем добавления) в один вектор, чтобы представить исходный документ.
- Затем Чтобы иметь возможность находить похожие документы на основе вопросов, вектор вопроса и векторы документов должны иметь одинаковую длину, поэтому нам, очевидно, необходимо уменьшить размерность документов, которые были разделены и повторно вставлены в один вектор.
Итак, есть ли способ правильно уменьшить их размеры? документы из 3072 тусклых обратно в 1536 тусклых?
Согласно моим исследованиям, это можно сделать с помощью PCA, я нашел следующий пример на C#, но здесь вместо этого данные [][] из []:
Код: Выделить всё
double[][] data = new double[][]
{
// ... Your combined embedding vectors here
};
// Create a new Principal Component Analysis
var pca = new PrincipalComponentAnalysis()
{
Method = PrincipalComponentMethod.Center,
Whiten = false
};
// Learn the PCA model
pca.Learn(data);
// Transform the data into the reduced dimensionality space
double[][] reducedData = pca.Transform(data, 3); // Reducing to 3 dimensions
Подробнее здесь: https://stackoverflow.com/questions/786 ... nality-red