Vector search for Amazon DocumentDB (z kompatybilnością z MongoDB) jest teraz ogólnie dostępne

4 marca 2024

Twórcy AWS ogłaszają ogólną dostępność vector search for Amazon DocumentDB (z kompatybilnością z MongoDB), nowej, wbudowanej funkcji, która umożliwia przechowywanie, indeksowanie i przeszukiwanie milionów wektorów z czasem reakcji wynoszącym milisekundy w bazie danych dokumentów.

Wyszukiwanie wektorowe to nowa technika stosowana w uczeniu maszynowym (ML) w celu znalezienia punktów danych podobnych do podanych danych poprzez porównanie ich reprezentacji wektorowych przy użyciu metryk odległości lub podobieństwa. Wektory to numeryczna reprezentacja nieustrukturyzowanych danych utworzonych na podstawie dużych modeli językowych (LLM) hostowanych w Amazon Bedrock, Amazon SageMaker i innych otwartych lub zastrzeżonych usługach ML. Podejście to jest przydatne przy tworzeniu aplikacji generatywnej sztucznej inteligencji (AI), takich jak wyszukiwanie intuicyjne, rekomendowanie produktów, personalizacja i chatboty z wykorzystaniem podejścia modelu Retrieval Augmented Generation (RAG). Na przykład, jeśli zbiór danych zawierał pojedyncze dokumenty dotyczące filmów, można semantycznie wyszukiwać filmy podobne do Titanica na podstawie wspólnego kontekstu, takiego jak „łodzie”, „tragedia” lub „filmy oparte na prawdziwych historiach”, zamiast po prostu dopasowywać słowa kluczowe.

Dzięki wyszukiwaniu wektorów dla Amazon DocumentDB możesz efektywnie przeszukiwać bazę danych w oparciu o szczegółowe znaczenie i kontekst, bez konieczności poświęcania czasu i kosztów na zarządzanie oddzielną infrastrukturą wektorowych baz danych. Korzystasz także z w pełni zarządzanej, skalowalnej, bezpiecznej i wysoce dostępnej bazy danych dokumentów opartej na JSON, którą zapewnia Amazon DocumentDB.

Pierwsze kroki z vector search on Amazon DocumentDB  

Funkcja wyszukiwania wektorowego jest dostępna w klastrach opartych na instancjach Amazon DocumentDB 5.0. Aby zaimplementować aplikację do wyszukiwania wektorów, generujesz wektory za pomocą modeli osadzania pól w dokumencie i przechowujesz wektory obok danych źródłowych w Amazon DocumentDB.

Funkcja wyszukiwania wektorowego jest dostępna w klastrach opartych na instancjach Amazon DocumentDB 5.0. Aby zaimplementować aplikację do wyszukiwania wektorów, generujesz wektory za pomocą modeli osadzania pól w dokumencie i przechowujesz wektory obok danych źródłowych w Amazon DocumentDB.

Następnie tworzysz indeks wektorów w polu wektorowym, który pomoże w wyszukiwaniu podobnych wektorów i przeszukiwaniu bazy danych Amazon DocumentDB przy użyciu wyszukiwania semantycznego. Na koniec zapytania przesłane przez użytkowników są konwertowane na wektory przy użyciu tego samego modelu osadzania, aby uzyskać semantycznie podobne dokumenty i zwrócić je klientowi.

Pora przyjrzeć się, jak zaimplementować prostą aplikację do wyszukiwania semantycznego przy użyciu wyszukiwania wektorowego w Amazon DocumentDB.

Krok 1. Utwórz vector embeddings przy użyciu modelu Amazon Titan Embeddings

Użyj modelu Amazon Titan Embeddings, aby utworzyć wektor osadzania. Model Amazon Titan Embeddings jest dostępny w Amazon Bedrock, bezserwerowej generatywnej usłudze AI. Dostęp do niego można łatwo uzyskać za pomocą jednego API i bez konieczności zarządzania jakąkolwiek infrastrukturą.

prompt = "I love dog and cat."
response = bedrock_runtime.invoke_model(
    body= json.dumps({"inputText": prompt}), 
    modelId='amazon.titan-embed-text-v1', 
    accept='application/json', 
    contentType='application/json'
)
response_body = json.loads(response['body'].read())
embedding = response_body.get('embedding')

Zwrócone vector embedding będzie wyglądać podobnie do tego:

[0.82421875, -0.6953125, -0.115722656, 0.87890625, 0.05883789, -0.020385742, 0.32421875, -0.00078201294, -0.40234375, 0.44140625, ...]

Krok 2. Wstaw wektory i utwórz indeks wektorowy

Możesz dodać wygenerowane osadzania wektorów za pomocą operacji wstawki( [{},...,{}] ) z listą dokumentów, które chcesz dodać do swojej kolekcji w Amazon DocumentDB.

db.collection.insertMany([
    {sentence: "I love a dog and cat.", vectorField: [0.82421875, -0.6953125,...]},
    {sentence: "My dog is very cute.", vectorField: [0.05883789, -0.020385742,...]},
    {sentence: "I write with a pen.", vectorField: [-0.020385742, 0.32421875,...]},
  ...
]);

Indeks wektorowy można utworzyć za pomocą polecenia createIndex. Amazon DocumentDB przeprowadza przybliżone wyszukiwanie najbliższego sąsiada (ANN) przy użyciu odwróconego pliku z indeksem wektorowym kompresji płaskiej (IVFFLAT). Funkcja obsługuje trzy metryki odległości: euklidesową, cosinus i iloczyn wewnętrzny. W przykładzie będziesz używać odległości euklidesowej, miary odległości w linii prostej pomiędzy dwoma punktami w przestrzeni. Im mniejsza odległość euklidesowa, tym wektory są bliżej siebie.

db.collection.createIndex (
   { vectorField: "vector" },
   { "name": "index name",
     "vectorOptions": {
        "dimensions": 100, // the number of vector data dimensions
        "similarity": "euclidean", // Or cosine and dotProduct
        "lists": 100 
      }
   }
);

Krok 3. Wyszukaj vector embeddings w Amazon DocumentDB

Możesz teraz wyszukiwać podobne wektory w swoich dokumentach, korzystając z nowego operatora potoku agregacji w ramach $search. Przykładowy kod wyszukiwania „Lubię zwierzaki” wygląda następująco:

db.collection.aggregate ({
  $search: {
    "vectorSearch": {
      "vector": [0.82421875, -0.6953125,...], // Search for ‘I like pets’
      "path": vectorField,
      "k": 5,
      "similarity": "euclidean", // Or cosine and dotProduct
      "probes": 1 // the number of clusters for vector search
      }
     }
   });

Spowoduje to zwrócenie wyników wyszukiwania, takich jak „Kocham zwierzaki”. co jest semantycznie podobne.

Aby dowiedzieć się więcej, zapoznaj się z dokumentacja Amazon DocumentDB. Aby zobaczyć bardziej praktyczny przykład – semantyczne wyszukiwanie filmów za pomocą Amazon DocumentDB – znajdź kody źródłowe Pythona i zestawy danych w repozytorium GitHub.

Już dostępne

Vector search for Amazon DocumentDB jest teraz dostępne bez dodatkowych kosztów dla wszystkich klientów korzystających z klastrów opartych na instancjach usługi Amazon DocumentDB 5.0 we wszystkich regionach AWS, w których dostępna jest usługa Amazon DocumentDB. Podczas przechowywania, indeksowania i wyszukiwania osadzonych wektorów w Amazon DocumentDB naliczane będą standardowe opłaty za obliczenia, operacje I/O, przechowywanie i tworzenie kopii zapasowych.

Aby dowiedzieć się więcej, zapoznaj się z dokumentacją Amazon DocumentDB i wyślij opinię do AWS re:Post dla Amazon DocumentDB lub za pośrednictwem zwykłych kontaktów wsparcia AWS.

źródło:AWS

Case Studies
Referencje

Hostersi wsparli nas na każdym etapie projektowania i budowy infrastruktury. Finansowanie, które pomogli pozyskać nam od AWS, pozwoliło przetestować szereg różnych rozwiązań i wybrać konfigurację, która najlepiej odpowiada potrzebom naszej aplikacji. Hostersi stworzyli dla nas infrastrukturę „szytą na miarę”, którą dzięki programowi wsparcia startupów, pozyskaliśmy niemal bezkosztowo.

Wojciech Mróz
CEO & Co-founder Pagaspot
W skrócie o nas
Specjalizujemy się w dostarczaniu rozwiązań IT w obszarach projektowania infrastruktury serwerowej, wdrażania chmury obliczeniowej, opieki administracyjnej i bezpieczeństwa danych.