Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Векторный поиск
Замечание
Поддержка векторов была представлена в EF Core 10.0 и поддерживается только в SQL Server 2025 и более поздних версиях.
Тип данных вектора SQL Server позволяет хранить внедрения, которые представляют собой представление смысла, которые можно эффективно искать по сходству, что позволяет использовать рабочие нагрузки искусственного интеллекта, такие как семантический поиск и создание дополненного экземпляра (RAG).
Чтобы использовать vector тип данных, просто добавьте свойство .NET типа в тип SqlVector<float> сущности, указав измерения следующим образом:
public class Blog
{
// ...
[Column(TypeName = "vector(1536)")]
public SqlVector<float> Embedding { get; set; }
}
После добавления свойства и соответствующего столбца, созданного в базе данных, можно начать вставку внедренных значений. Создание внедрения выполняется за пределами базы данных, как правило, через службу, и сведения об этом отсутствуют в этой документации. Однако библиотеки .NET Microsoft.Extensions.AI содержатся IEmbeddingGenerator, что является абстракцией при внедрении генераторов, имеющих реализации для основных поставщиков.
Выбрав генератор внедрения и настроив его, используйте его для создания внедрения и вставки, как показано ниже.
IEmbeddingGenerator<string, Embedding<float>> embeddingGenerator = /* Set up your preferred embedding generator */;
var embedding = await embeddingGenerator.GenerateVectorAsync("Some text to be vectorized");
context.Blogs.Add(new Blog
{
Name = "Some blog",
Embedding = new SqlVector<float>(embedding)
});
await context.SaveChangesAsync();
Наконец, используйте EF.Functions.VectorDistance() функцию для выполнения поиска сходства заданного пользовательского запроса:
var sqlVector = new SqlVector<float>(await embeddingGenerator.GenerateVectorAsync("Some user query to be vectorized"));
var topSimilarBlogs = context.Blogs
.OrderBy(b => EF.Functions.VectorDistance("cosine", b.Embedding, sqlVector))
.Take(3)
.ToListAsync();
Замечание
Встроенная поддержка в EF 10 заменяет предыдущее расширение EFCore.SqlServer.VectorSearch , которое позволило выполнять векторный поиск до vector появления типа данных. В рамках обновления до EF 10 удалите расширение из проектов.
Функция VECTOR_SEARCH() (в предварительной версии) для приблизительного поиска с помощью DiskANN в настоящее время не поддерживается.