Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Uwaga / Notatka
Poniżej opisano obsługę wyszukiwania wektorów w programie EF 10. Program EF 9 zawiera podobną obsługę eksperymentalną z nieco inną nazwą metody.
Usługa Azure Cosmos DB oferuje teraz obsługę wyszukiwania podobieństwa wektorów. Wyszukiwanie wektorowe jest podstawową częścią niektórych typów aplikacji, w tym sztucznej inteligencji, wyszukiwania semantycznego i innych. Usługa Azure Cosmos DB umożliwia przechowywanie wektorów bezpośrednio w dokumentach wraz z resztą danych, co oznacza, że można wykonywać wszystkie zapytania względem pojedynczej bazy danych. Może to znacznie uprościć architekturę i usunąć potrzebę dodatkowego, dedykowanego rozwiązania bazy danych wektorów w stosie. Aby dowiedzieć się więcej na temat wyszukiwania wektorów usługi Azure Cosmos DB, zobacz dokumentację.
Właściwość wektora można skonfigurować wewnątrz OnModelCreatingelementu :
public class Blog
{
...
public float[] Vector { get; set; }
}
public class BloggingContext
{
...
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Blog>(b =>
{
b.Property(b => b.Vector).IsVectorProperty(DistanceFunction.Cosine, dimensions: 1536);
b.HasIndex(x => x.Vector).IsVectorIndex(VectorIndexType.Flat);
});
}
}
Na tym etapie model jest skonfigurowany. Wstawianie danych wektorowych odbywa się podobnie jak w przypadku dowolnego innego typu danych za pomocą platformy EF:
float[] vector = /* generate vector data from text, image, etc. */
context.Add(new Blog { Vector = vector });
await context.SaveChangesAsync();
Na koniec użyj EF.Functions.VectorDistance() funkcji w zapytaniach LINQ, aby przeprowadzić wyszukiwanie podobieństwa wektorów:
float[] anotherVector = /* generate vector data from text, image, etc. */
var blogs = await context.Blogs
.OrderBy(s => EF.Functions.VectorDistance(s.Vector, anotherVector))
.Take(5)
.ToListAsync();
Spowoduje to zwrócenie pięciu pierwszych blogów na podstawie podobieństwa ich Vector właściwości i danych dostarczonych anotherVector zewnętrznie.
Wyszukiwanie hybrydowe
Wyszukiwanie podobieństwa wektorów może być używane z wyszukiwaniem pełnotekstowym w tym samym zapytaniu (tj. wyszukiwaniem hybrydowym), łącząc wyniki funkcji VectorDistance i FullTextScore za pomocą funkcji RRF (Wzajemne łączenie rangi, Reciprocal Rank Fusion).
Zapoznaj się z dokumentacją , aby dowiedzieć się, jak włączyć obsługę wyszukiwania pełnotekstowego w modelu EF i jak używać wyszukiwania hybrydowego w zapytaniach.