Hör auf zu warten, fang an zu bauen: Sprachassistent mit Milvus und Llama 3.2
"Entschuldigung, diese Funktion ist in deiner Region noch nicht verfügbar."
Wenn du in Europa lebst, hast du diese Nachricht wahrscheinlich öfter gesehen, als dir lieb ist. Während der Rest der Welt jeden neuen KI-Durchbruch feiert, drücken viele von uns sprichwörtlich die Nase ans Fenster und schauen der Party von draußen zu. Von Llama 3.2 bis zu OpenAIs Advanced Voice Mode stecken wir in einer endlosen Schleife von „Kommt in deine Region... bald™️“.
Nun, ich hatte es satt zu warten. Wenn wir nicht zur Party gehen können, veranstalten wir eben unsere eigene!
In diesem Blog führen wir dich durch den Aufbau eines Voice Assistant, eines spezialisierten Agentic-RAG-Systems (Retrieval-Augmented Generation), das für Sprachinteraktionen entwickelt wurde. Mithilfe von Open-Source-Projekten wie Milvus für die Vektordatenbank, Llama 3.2 und verschiedenen GenAI-Technologien, darunter Assemby AI, DuckDuckGo und ElevenLabs, geht dieser Sprachassistent über bloße Verarbeitung hinaus – er versteht Sprachanfragen intelligent und reagiert darauf.
Wichtige Technologien, die wir verwenden werden
- Milvus ist eine quelloffene, leistungsstarke und hochskalierbare Vektordatenbank, die unstrukturierte Daten im Milliardenmaßstab über hochdimensionale Vektoreinbettungen speichert, indiziert und durchsucht. Sie eignet sich perfekt für den Aufbau moderner KI-Anwendungen wie Retrieval Augmented Generation (RAG), semantische Suche, multimodale Suche und Empfehlungssysteme. Milvus läuft effizient in verschiedenen Umgebungen, von Laptops bis hin zu groß angelegten verteilten Systemen.
- Llama 3.2 ist das neueste große Sprachmodell (LLM) von Meta. Wir verwenden es, um Antworten auf Basis der aus Milvus abgerufenen Informationen zu generieren.
- Assembly AI stellt fortschrittliche Speech-to-Text-APIs bereit, die darauf ausgelegt sind, gesprochene Sprache mit hoher Genauigkeit in geschriebenen Text umzuwandeln.
- DuckDuckGo ist eine Suchmaschine, die den Datenschutz der Nutzer in den Vordergrund stellt und allen Nutzern dieselben Suchergebnisse liefert, im Gegensatz zu traditionellen Suchmaschinen, die Ergebnisse basierend auf Nutzerdaten anpassen.
- ElevenLabs ist auf fortschrittliche Sprachsynthese spezialisiert und ermöglicht es Nutzern, aus kurzen Audiobeispielen realistische Stimmklone zu erstellen.
Was wir bauen werden: Ein Agentic-RAG-System für Sprachinteraktionen
Es gibt mehrere Möglichkeiten, ein Agentic-RAG-System zu bauen. Für alle Interessierten habe ich einen Blog geschrieben, der zeigt, wie man ein lokales agentic RAG system mit Llama 3.2, LangChain und LangGraph aufbaut.
Diesmal gehen wir jedoch einen anderen Weg und bauen einen Agenten von Grund auf neu, ohne uns auf bestehende Frameworks zu verlassen. Die Architektur dieses RAG-Systems ist in mehrere Komponenten unterteilt (wie unten dargestellt), die jeweils einen bestimmten Teil dieses Prozesses übernehmen.
Abbildung – die Architektur dieses agentic RAG system.png
Abbildung: Die Architektur dieses agentic RAG system
Unten findest du einen Überblick darüber, wie dieses agentic RAG system funktioniert.
- Der Nutzer sendet seine Sprachanfrage an das System und startet damit die Interaktion.
- Assembly AI transkribiert die Stimme des Nutzers in Echtzeit in Text.
- Der transkribierte Text wird vom Query Processor verarbeitet, der ihn für die Vektoranalyse und Keyword-Erkennung im agentischen RAG-System vorbereitet.
- Die Milvus-Vektordatenbank führt semantische Ähnlichkeitssuchen durch und ruft Dokumente mit hoher semantischer Ähnlichkeit zur Anfrage ab.
- Gleichzeitig durchsucht der Keyword Detector den Text nach bestimmten Keywords, die spezifische Aktionen auslösen könnten, beispielsweise den Zugriff auf die Google Calendar API, wenn kalenderbezogene Keywords erkannt werden.
- Aus Milvus abgerufene Dokumente werden von unserem agentischen System auf ihre Relevanz für die Anfrage geprüft. Wenn sie relevant sind, werden sie mit Llama 3.2 zur Antwortgenerierung weiterverarbeitet; falls nicht, wird eine Websuche gestartet. Wenn die Dokumente aus Milvus nicht relevant sind, führt DuckDuckGo anschließend eine Websuche durch.
- Llama 3.2 nutzt die Informationen entweder aus Milvus oder DuckDuckGo oder dem Keyword Detector, abhängig von der Relevanzprüfung, um eine kohärente und kontextgerechte Antwort zu generieren.
- Die von Llama 3.2 generierte Antwort wird mithilfe der Text-to-Speech-Technologie von ElevenLabs in Sprache umgewandelt.
- Schließlich wird die synthetisierte Sprachantwort an den Nutzer zurückgegeben, wodurch die Interaktionsschleife mit einer intelligenten, kontextbewussten Antwort abgeschlossen wird.
Im nächsten Abschnitt besprechen wir, wie wir dieses agentische RAG-System aufbauen, insbesondere wie dieses System verschiedene Arten von Suchen gleichzeitig handhabt.
Multi-Source-Orchestrierung
Im Gegensatz zu traditionellen RAG-Systemen, die einem linearen Muster Anfrage → Abrufen → Generieren folgen, denkt unser System selbstständig. Sehen wir uns die Schlüsselkomponenten unserer Implementierung an:
💡 Hinweis: Aus Gründen der Klarheit und Lesbarkeit konzentrieren wir uns hier auf die wichtigsten Code-Snippets. Die vollständige Implementierung ist in unserem GitHub-Repository verfügbar.
Erstens: Milvus-Vektorsuche
milvus_results = self.milvus_wrapper.search_similar_text(text)
relevant_results = [result for result in milvus_results
if result["distance"] > 0.6]
if relevant_results:
context = "\n".join([result["text"] for result in milvus_results])
augmented_query = f"""
Context: {context}
User Query: {text}
Please answer based on the given context.
"""
Wenn du eine Frage stellst, prüfen wir zunächst unsere Milvus-Wissensdatenbank auf relevante Ergebnisse. Wenn wir etwas Relevantes finden (Ähnlichkeit > 0.6), verwenden wir dies, um deine Anfrage zu beantworten.
Zweitens: Kalenderintegration
elif any(keyword in text.lower() for keyword in
["calendar", "schedule", "events", "appointment"]):
events = await self.calendar_service.get_upcoming_events()
augmented_query = f"""
Calendar Events: {events}
User Query: {text}
Please answer based on their calendar events.
"""
Wenn du nach deinem Zeitplan fragst, überspringen wir die Wissensdatenbank vollständig und gehen direkt zu deinem Kalender. Es ist nicht nötig, Vektoren zu durchsuchen, wenn wir genau wissen, wo sich die Informationen befinden!
Schließlich: Websuche als Fallback
else:
web_results = self.web_searcher.search(text)
if web_results:
context = "\n".join(web_results[:3])
augmented_query = f"""
Web search results: {context}
User Query: {text}
Please answer based on the web search results.
"""
Wenn wir in Milvus nichts Relevantes finden und es sich nicht um eine Kalenderanfrage handelt, greifen wir für eine Websuche auf DuckDuckGo zurück. Anschließend nehmen wir die Top-Ergebnisse, extrahieren die relevantesten Absätze und geben sie an unser LLM Llama 3.2 weiter.
Schließlich nutzt Llama 3.2 die Informationen als Kontext, um eine kohärente und genaue Antwort zu generieren.
Warum Milvus für RAG?
RAG-Systeme sind nur so gut wie ihre Abrufgeschwindigkeit und die Qualität ihres Abrufs. Deshalb ist Milvus hier entscheidend:
- Geschwindigkeit zählt: Wenn du einen Sprachassistenten baust, möchte niemand 5 Sekunden auf eine Antwort warten. Milvus kann Millionen von Vektoren in Millisekunden durchsuchen.
- Genauigkeit im großen Maßstab: Milvus ist hervorragend darin, hochdimensionale Vektorsuchen mithilfe von Approximate-Nearest-Neighbor-(ANN)-Algorithmen zu verwalten. Mit robusten Indexierungsoptionen wie IVF_FLAT, HNSW und DiskANN stellt Milvus hohe Recall-Raten sicher, selbst wenn die Vektordatenbank skaliert, und bewahrt die Integrität der Suchergebnisse in umfangreichen Systemen.
Die Ergebnisse?
Unser DIY-Sprachassistent ist vielleicht nicht der beste da draußen, aber er hat einige einzigartige Stärken:
- Modulares Design: Tausche jede Komponente aus (probiere Whisper statt AssemblyAI aus, warum nicht?)
- Volle Kontrolle: Keine Black Boxes, nur transparenter, hackbarer Code
- Datenschutzorientiert: Deine Daten bleiben deine
Fazit
Auch wenn dieses Projekt offensichtlich weit davon entfernt ist, was der OpenAI Advanced Voice Mode leisten kann, hat es außerdem etwas Befriedigendes, seinen eigenen KI-Assistenten zu bauen. Er hat vielleicht nicht Claudes Charme oder ChatGPTs Feinschliff, aber er hat Charakter. Noch wichtiger ist, dass er echtes Eigentum und Kontrolle über deinen KI-Stack bietet. Durch die Nutzung von Open-Source-Tools wie der Milvus-Vektordatenbank haben wir gezeigt, wie wir etwas bauen können, das:
- Wirklich deins ist: Jede Komponente ist transparent und modifizierbar
- Geografisch uneingeschränkt: Überall bereitstellen, jeden bedienen
- Für immer verfügbar: Keine plötzlichen API-Änderungen oder Diensteinstellungen
- Vollständig anpassbar: Funktionen hinzufügen, Verhalten ändern oder für spezifische Anforderungen optimieren
- Privacy-First: Deine Daten bleiben auf deiner Infrastruktur, unter deiner Kontrolle
Und anders als einige andere KI-Tools, die ich erwähnen könnte, weiß dieses hier definitiv, wo Europa auf einer Karte liegt!
Der vollständige Code ist auf unserem Github verfügbar.
Wir würden gerne hören, was du denkst!
Wenn dir dieser Blogbeitrag gefällt, ziehe bitte Folgendes in Betracht:
- ⭐ Gib uns einen Stern auf GitHub
- 💬 Tritt unserer Milvus Discord community bei, um deine Erfahrungen zu teilen
- 🔍 Erkunde unser Bootcamp repository für weitere Beispiele von RAG-Anwendungen mit Milvus
Weiterlesen

Zilliz Cloud Now Available in AWS Asia Pacific (Seoul)
Zilliz Cloud is now available in AWS Seoul — low-latency vector search, in-country data residency, and one-step migration for Korean AI teams. 31 regions across 5 clouds.

Introducing Business Critical Plan: Enterprise-Grade Security and Compliance for Mission-Critical AI Applications
Discover Zilliz Cloud’s Business Critical Plan—offering advanced security, compliance, and uptime for mission-critical AI and vector database workloads.

Announcing VDBBench 1.0: Open-Source VectorDB Benchmarking with Your Real-World Production Workloads
Discover VDBBench 1.0, an open-source tool for benchmarking vector databases with real-world production data, streaming ingestion, and concurrent workloads.



