Befolgen Sie diese Schritte, um das Projekt einzurichten und auszuführen:
Installieren Sie PostgreSQL
admin
.Konfigurieren Sie das Projekt
config
im Projektverzeichnis.db.js
und aktualisieren Sie Zeile 3:mayanksharma
in Ihren Systembenutzernamen.Richten Sie die Datenbank ein
CREATE EXTENSION vector;
Installieren Sie Ollama
ollama pull snowflake-arctic-embed
Projektabhängigkeiten installieren
npm install
node server.js
Installieren Sie die REST-Client-Erweiterung
Testen Sie die API
api.http
, um die API-Endpunkte zu testen. {
"query" : " your_search_query "
}
{
"title" : " magazine_title " ,
"author" : " author_name " ,
"category" : " magazine_category " ,
"content" : " magazine_content "
}
Ich habe PostgreSQL mit pgvector (Speichern von Einbettungsvektoren) und tsvector (Speichern von Inhaltstext) verwendet.
Anforderung: Suche aus 1 Million Datensätzen
Hierarchical Navigable Small Worlds (HNSW)-Indizes für die Vektorsuche bei Inhaltseinbettungen hinzugefügt . Grund: Die Suche erfordert einen hohen Rückruf, wodurch hnsw besser ist als ivfflat Reference
Indexe für Titel, Autor und Inhalt hinzugefügt
Paginierung hinzugefügt, um Ladezeiten zu verkürzen
Profil: Gipfel
Virtuelle Benutzer: 20
Testdauer: 5 Minuten
Endpunkttreffer: POST /api/v1/magazine/hybridsearch/1 („glasgow“, „game“, „business“, „shubham“, „food“ und „modern“)
Insgesamt gesendete Anfragen: 10.915
Anfrage pro Sekunde: 35,62
Durchschnittliche Reaktionszeit: 116 ms
Es werden zwei einzelne Dienste zur Textsuche und zur Vektorsuche genutzt
Einbettungen werden durch das Meta-Lama-Modell „snowflake-arctic-embed“ generiert und sind leichtgewichtig.
SCHRITT 1: Gemeinsame Objekte aus den Ergebnissen der Vektor- und Volltextsuche werden zuerst angezeigt.
SCHRITT 2: Gefolgt von Objekten aus der reinen Textsuche,
SCHRITT 3: Restliche Objekte aus der Vektorsuche.
Abfrage: Vektor „glasgow“, gibt „Celtic Feast Journal“ zurück, dessen Inhalt „Schottland“ enthält.
Abfrage: Vektor „Shortbread“, gibt „Celtic Feast Journal“ zurück, da „Shortbread“ mit „Scotland“ verwandt ist.
Abfrage: Schlüsselwort/Volltext „shubham“, gibt „Physics Refresher“ mit dem Autorennamen „Shubham Thorve“ zurück.
Abfrage: Schlüsselwort/Volltext „mayank“, gibt „Digit Gaming“ zurück, das den Autorennamen „Mayank Khurana“ hat.
Abfrage: Schlüsselwort/Volltext „Monat“, gibt „Dalal Street Journal“ zurück, das den Inhalt „Alles über Videospiele in diesem Monat“ enthält.
/model