Entdecken Sie Verba, den Goldenen RAGtriever
Verba ist eine Open-Source-Anwendung mit einer benutzerfreundlichen Search-Advanced Generation (RAG)-Schnittstelle. In nur wenigen einfachen Schritten können Sie Ihre Daten erkunden und daraus Erkenntnisse gewinnen, sowohl lokal mit HuggingFace und Ollama als auch über OpenAI, Cohere und Google.

Verba ist ein neues KI-gestütztes Tool, das Nutzern hilft, ansprechende und bedeutungsvolle Inhalte zu erstellen. Es unterstützt bei allen Schritten, von der Ideenfindung bis hin zum Entwurf, und steigert Produktivität sowie Kreativität. Ob du ein Schriftsteller oder Content-Ersteller bist, Verba eröffnet neue Möglichkeiten, den kreativen Prozess zu optimieren.
Einführung
Willkommen zu einer spannenden Reise in die Welt der Vektorsuche mit Verba!
Egal, ob Sie ein Anfänger sind, der neue Tools erkunden möchte, oder ein erfahrener Entwickler, der sein Toolkit erweitern möchte, dieser Blogbeitrag ist genau das Richtige für Sie. Wir werden uns eingehend mit dem befassen, was Verba ist, welche Anwendungsfälle es gibt, wie man es mit Python verwendet und es mit einigen beliebten Alternativen vergleichen.
Also, schnapp dir eine Tasse Kaffee und los geht’s!
Warum Vektorsuche?
Bevor wir uns mit den Besonderheiten von Verba befassen, wollen wir verstehen, was genau eine Vektorsuche ist. Einfach ausgedrückt ist die Vektorsuche eine Methode zum Auffinden ähnlicher Elemente anhand ihrer numerischen Darstellungen oder Vektoren. Es ist besonders leistungsstark für Aufgaben wie das Durchsuchen großer Textdatensätze, das Finden ähnlicher Bilder oder sogar das Empfehlen von Produkten.
Warum ist die Vektorsuche wichtig? Hier sind einige Gründe:
- Skalierbarkeit: Herkömmliche Suchmethoden können bei großen Datensätzen Probleme bereiten. Die Vektorsuche lässt sich gut mit großen Datenmengen skalieren.
- Genauigkeit: Durch die Verwendung von Einbettungen kann die Vektorsuche die semantische Bedeutung erfassen, was zu genaueren Suchergebnissen führt.
- Vielseitigkeit: Nicht nur für Text! Die Vektorsuche kann für Bilder, Audio und alle anderen Daten verwendet werden, die als Vektoren dargestellt werden können.
Was ist Weaviate Verba?
Verba ist ein Open-Source-Tool, das von Weaviate entwickelt wurde, um die Vektorsuche einfacher und effizienter zu machen. Verba nutzt die Funktionen von Weaviate, einer Open-Source-Vektordatenbank, die beide Datenobjekte speichern kann und Vektoreinbettungen. Diese Funktion ermöglicht eine hochentwickelte, nahtlose und effiziente Suche. Verba kombiniert die Leistungsfähigkeit maschineller Lernmodelle zur Generierung von Einbettungen (Vektoren) und die Robustheit von Weaviate zur Durchführung schneller und genauer Suchvorgänge.
Modellunterstützung
Wählen Sie je nach Ihrem individuellen Anwendungsfall zwischen verschiedenen LLM-Anbietern:
- Ollama: Lokale Einbettungs- und Generierungsmodelle, z. B. Llama3
- HuggingFace: Lokale Einbettungsmodelle, z. B. MiniLMEmbedder
- Cohere: Einbettungs- und Generierungsmodelle, z. B. Command R+
- Google: Einbettungs- und Generierungsmodelle, z. B. Gemini
- OpenAI: Einbettungs- und Generierungsmodelle, z. B. GPT-4o
Datenunterstützung
Verba unterstützt die Arbeit mit den folgenden Datentypen:
- PDF: PDFs in Verba importieren
- CSV/XLSX: Tabellendaten in Verba importieren
- Unstrukturiert: Daten über Unstructured.io importieren
- Multimodal: Der Import multimodaler Daten in Verba ist geplant.
Anwendungsfälle von Verba
Dokumentensuche Einer der häufigsten Anwendungsfälle für Weaviate Verba ist die Dokumentensuche. Unabhängig davon, ob Sie über eine Sammlung von Forschungsarbeiten, Nachrichtenartikeln oder Blogbeiträgen verfügen, kann Verba Ihnen dabei helfen, relevante Dokumente anhand einer Suchanfrage zu finden.
Bildähnlichkeitssuche Wenn Sie über einen Datensatz mit Bildern verfügen, können Sie mit Verba visuell ähnliche Bilder finden. Dies ist besonders nützlich für Anwendungen wie bildbasierte Empfehlungen oder die Erkennung doppelter Bilder.
Semantische Textsuche Verba zeichnet sich durch semantische Textsuche aus, bei der das Ziel darin besteht, Dokumente zu finden, die einer bestimmten Suchanfrage semantisch ähnlich sind. Dies geht über die Keyword-Zuordnung hinaus und versteht den Kontext und die Bedeutung der Abfrage.
Erste Schritte mit Verba
Lassen Sie uns erklären, wie Sie mit Weaviate Verba beginnen und es in einem Python-Projekt verwenden. Wir gehen durch die Installation, die grundlegende Verwendung und ein praktisches Beispiel.
Installation
Als Erstes müssen Sie Weaviate und die Verba-Bibliothek installieren. Sie können dies mit pip tun:
pip install weaviate-client
pip install weaviate-verbaEinrichten
Um Weaviate Verba verwenden zu können, muss eine Weaviate-Instanz ausgeführt werden. Die lokale Bereitstellung ist die einfachste Möglichkeit, Ihre Weaviate-Datenbank für Prototyping und Tests zu starten. Sie können Weaviate lokal mit Docker ausführen:
docker run -p 8080:8080 -p 50051:50051 semitechnologies/weaviate:latestDetaillierte Anweisungen zur Bereitstellung von Weaviate mit Docker finden Sie im Weaviate Docker Guide.
Wenn Sie eine cloudbasierte Lösung bevorzugen, bietet Weaviate Cloud Service (WCS) eine skalierbare, verwaltete Umgebung. Erfahren Sie, wie Sie einen Cloud-Cluster einrichten und die API-Schlüssel erhalten, indem Sie dem Weaviate Cluster Setup Guide folgen.
Verba verwenden
Bevor Sie Verba starten, müssen Sie den Zugriff auf verschiedene Komponenten, abhängig von den von Ihnen gewählten Technologien, wie OpenAI, Cohere und HuggingFace, über eine „.env“-Datei konfigurieren. Erstellen Sie diese „.env“ im selben Verzeichnis, in dem Sie Verba starten möchten. 👉 Beispiel .env.
Sehen wir uns nun an, wie man Weaviate Verba mit Python-Code verwendet. Wir beginnen mit einem einfachen Beispiel für die Indizierung und Suche von Textdaten.
Indizierungsdaten:
import weaviate
from weaviate_verba import Verba
# Verbindung zur Weaviate-Instanz
client = weaviate.Client("http://localhost:8080")
# Verba initialisieren
verba = Verba(client)
# Definieren Sie ein Schema
schema = {
"classes": [
{
"class": "Article",
"properties": [
{
"name": "title",
"dataType": ["string"]
},
{
"name": "content",
"dataType": ["text"]
}
]
}
]
}
# Das Schema erstellen
client.schema.create(schema)
# Einige Daten indizieren
articles = [
{"title": "Introduction to Machine Learning", "content": "Machine learning is a field of AI..."},
{"title": "Deep Learning Basics", "content": "Deep learning is a subset of machine learning..."},
]
for article in articles:
client.data_object.create(article, "Article")Suche nach Daten:
# Suche nach ähnlichen Artikeln
query = "Basics of AI"
result = verba.search("Article", query)
for item in result:
print(f"Title: {item['title']}, Content: {item['content']}")Verba und lokale Dokumente
Lassen Sie uns näher erläutern, wie Sie mit Weaviate Verba lokal gespeicherte Dokumente indizieren und durchsuchen können. Wir führen Sie durch den Prozess des Ladens von Dokumenten aus Ihrem lokalen Dateisystem, deren Indizierung mit Weaviate Verba und der anschließenden Durchführung von Suchvorgängen.
Stellen Sie sicher, dass Weaviate und Verba installiert sind und eine Weaviate-Instanz ausgeführt wird.
Laden und Indizieren
Nehmen wir an, Sie haben ein Verzeichnis mit Textdateien, die Sie indizieren möchten. Wir schreiben ein Skript zum Laden dieser Dateien, erstellen ein Schema in Weaviate und indizieren die Dokumente.
import os
import weaviate
from weaviate_verba import Verba
# Verbindung zur Weaviate-Instanz
client = weaviate.Client("http://localhost:8080")
# Verba initialisieren
verba = Verba(client)
# Definieren Sie ein Schema
schema = {
"classes": [
{
"class": "Document",
"properties": [
{
"name": "title",
"dataType": ["string"]
},
{
"name": "content",
"dataType": ["text"]
}
]
}
]
}
# Das Schema erstellen
client.schema.create(schema)
# Funktion zum Laden von Dokumenten aus einem Verzeichnis
def load_documents_from_directory(directory_path):
documents = []
for filename in os.listdir(directory_path):
if filename.endswith(".txt"):
file_path = os.path.join(directory_path, filename)
with open(file_path, 'r', encoding='utf-8') as file:
content = file.read()
documents.append({
"title": filename,
"content": content
})
return documents
# Dokumente laden
directory_path = "/path/to/your/documents" # Ändern Sie dies in Ihren Verzeichnispfad
documents = load_documents_from_directory(directory_path)
# Index Dokumente
for doc in documents:
client.data_object.create(doc, "Document")Suche nach Dokumenten
Nachdem wir nun unsere lokalen Dokumente indiziert haben, können wir mit Verba eine Suche durchführen.
# Definieren Sie eine Suchanfrage
query = "Machine learning concepts"
# Die Suche durchführen
results = verba.search("Document", query)
# Anzeige der Ergebnisse
for result in results:
# Druckt die ersten 200 Zeichen des Inhalts
print(f"Title: {result['title']}, Content: {result['content'][:200]}...")Beispiel für ein vollständiges Skript
Hier ist das vollständige Skript, das das Laden, Indizieren und Suchen kombiniert:
import os
import weaviate
from weaviate_verba import Verba
# Verbindung zur Weaviate-Instanz
client = weaviate.Client("http://localhost:8080")
# Verba initialisieren
verba = Verba(client)
# Definieren Sie ein Schema
schema = {
"classes": [
{
"class": "Document",
"properties": [
{
"name": "title",
"dataType": ["string"]
},
{
"name": "content",
"dataType": ["text"]
}
]
}
]
}
# Das Schema erstellen
client.schema.create(schema)
# Funktion zum Laden von Dokumenten aus einem Verzeichnis
def load_documents_from_directory(directory_path):
documents = []
for filename in os.listdir(directory_path):
if filename.endswith(".txt"):
file_path = os.path.join(directory_path, filename)
with open(file_path, 'r', encoding='utf-8') as file:
content = file.read()
documents.append({
"title": filename,
"content": content
})
return documents
# Dokumente laden
directory_path = "/path/to/your/documents" # Ändern Sie dies in Ihren Verzeichnispfad
documents = load_documents_from_directory(directory_path)
# Index Dokumente
for doc in documents:
client.data_object.create(doc, "Document")
# Definieren Sie eine Suchanfrage
query = "Machine learning concepts"
# Die Suche durchführen
results = verba.search("Document", query)
# Anzeige der Ergebnisse
for result in results:
# Druckt die ersten 200 Zeichen des Inhalts
print(f"Title: {result['title']}, Content: {result['content'][:200]}...")Erläuterung
Laden von Dokumenten: Die Funktion „load_documents_from_directory“ liest Textdateien aus einem angegebenen Verzeichnis und lädt deren Inhalt in eine Liste von Wörterbüchern.
Dokumente indizieren: Jedes Dokument wird in Weaviate mit dem Klassennamen „Document“ indiziert.
Suchen: Die Suchabfrage wird verarbeitet und die Ergebnisse werden gedruckt. Dabei werden der Titel und die ersten 200 Zeichen des Inhalts jedes Dokuments angezeigt.
Wenn Sie diese Schritte befolgen, können Sie lokal gespeicherte Dokumente mit Weaviate Verba effizient indizieren und durchsuchen. Diese Methode kann für verschiedene Arten von Textdaten angepasst werden und ermöglicht so leistungsstarke und skalierbare Suchfunktionen in Ihren Projekten.
Vor- und Nachteile von Verba
Was ist also gut und was könnte an diesem Tool besser sein?
Vorteile von Verba
- Benutzerfreundlichkeit: Verba bietet eine High-Level-API, die die Integration der Vektorsuche in Ihre Anwendungen erleichtert.
- Flexibilität: Es unterstützt verschiedene Datentypen, einschließlich Text, Bilder und mehr.
- Leistung: Verba basiert auf Weaviate und gewährleistet eine schnelle und effiziente Suche, auch bei großen Datensätzen.
- Open Source: Open Source zu sein bedeutet, dass Sie zur Entwicklung beitragen und es an Ihre Bedürfnisse anpassen können.
Nachteile von Verba
- Komplexität der Einrichtung: Die Ersteinrichtung, insbesondere die Konfiguration von Weaviate, kann für Anfänger komplex sein.
- Ressourcenintensiv: Das Ausführen von Weaviate und die Durchführung von Vektoroperationen können ressourcenintensiv sein und erhebliche Rechenleistung erfordern.
- Lernkurve: Das Verständnis der Vektorsuchkonzepte und die effektive Verwendung von Verba erfordern möglicherweise eine Lernkurve.
👉 Möchten Sie Verba in Aktion sehen? Sehen Sie sich die Live-Demo von Verba an.
👉 Offizieller Blogbeitrag über Verba von Weaviate.
👉 YouTube-Video mit Funktionen und Möglichkeiten von Verba.
Einige Alternativen
Faiss
Faiss (Facebook AI Similarity Search) ist eine beliebte Bibliothek für die effiziente Ähnlichkeitssuche und Clusterung dichter Vektoren.
Vorteile von Faiss:
- Hoch optimiert: Faiss ist auf Leistung optimiert und verarbeitet große Datensätze effizient.
- Vielseitigkeit: Es unterstützt eine Vielzahl von Indizierungsmethoden und Suchstrategien.
Nachteile von Faiss:
- Komplexität: Die Einrichtung und Verwendung von Faiss kann komplex sein, insbesondere für Anfänger.
- Eingeschränkter Anwendungsbereich: Es konzentriert sich hauptsächlich auf die Vektorsuche und bietet keine vollwertige Suchmaschine wie Weaviate.
Elasticsearch
Elasticsearch ist eine weit verbreitete Suchmaschine, die mit dem k-NN-Plugin erweitert werden kann /vector-search-implementation-guide-api-edition) zur Unterstützung der Vektorsuche.
Vorteile von Elasticsearch mit k-NN:
- Skalierbarkeit: Elasticsearch ist hoch skalierbar und kann umfangreiche Suchanwendungen verarbeiten.
- Umfangreiche Funktionen: Über die Vektorsuche hinaus bietet es eine breite Palette an Such- und Analysefunktionen.
Nachteile von Elasticsearch mit k-NN:
- Komplexität: Das Einrichten und Konfigurieren von Elasticsearch mit dem k-NN-Plugin kann eine Herausforderung sein.
- Leistung: Obwohl es leistungsstark ist, kann es möglicherweise nicht mit der Leistung spezialisierter Vektorsuchtools wie Faiss oder Weaviate mithalten.
Schlussfolgerung
Verba ist ein leistungsstarkes Tool, das Ihnen die Funktionen der Vektorsuche direkt zur Verfügung stellt. Seine Benutzerfreundlichkeit, Flexibilität und Leistung machen es zu einer großartigen Wahl für eine Vielzahl von Anwendungen. Auch wenn die Einrichtung etwas komplex ist und einige Ressourcen erfordert, sind die Vorteile, die es bietet, die Mühe durchaus wert.
Für Anfänger kann der Einstieg in Weaviate Verba ein hervorragender Einstieg in die Welt der Vektorsuche sein. Der in diesem Beitrag bereitgestellte Beispielcode soll Ihnen den Einstieg in Ihre Reise erleichtern. Wenn Sie mit dem Tool vertrauter werden, werden Sie sein volles Potenzial und die breite Palette an Anwendungen entdecken, die es unterstützen kann.
Wenn Sie nach Alternativen suchen, sind Faiss und Elasticsearch mit dem k-NN-Plugin ebenfalls eine ausgezeichnete Wahl, jede mit ihren eigenen Stärken und Schwächen. Letztendlich hängt das beste Tool für Ihre Anforderungen von Ihrem spezifischen Anwendungsfall, Ihren Leistungsanforderungen und Ihrer Vertrautheit mit der Technologie ab.
Viel Spaß beim Codieren und möge Ihre Suche immer effizient und genau sein!
😎
Eine Mail, sobald ein neuer Beitrag erscheint.



