Allgemeine Einführung
Danswer ist ein Open-Source-KI-Assistent für die Dokumentensuche in Unternehmen, der entwickelt wurde, um eine Verbindung zu den Dokumenten, Anwendungen und Personen eines Teams herzustellen und über eine intelligente Chat-Schnittstelle und einheitliche Suchfunktionen Antworten auf natürlichsprachliche Anfragen zu liefern. Dabei wird sichergestellt, dass die Benutzerdaten und Chatprotokolle vollständig vom Benutzer kontrolliert werden. Der modulare Aufbau und die einfache Skalierbarkeit machen es zu einem idealen Tool für das Wissensmanagement und die Zusammenarbeit im Team.
Funktionsliste
- Chat-SchnittstelleDialog mit Dokumenten: Auswahl bestimmter Dokumente, mit denen interagiert werden soll.
- Maßgeschneiderter AI-AssistentKI-Assistenten mit verschiedenen Tipps und Wissensdatenbanken erstellen.
- DokumentensucheBietet Dokumentensuche und KI-Antworten auf natürlichsprachliche Abfragen.
- Mehrere AnschlüsseUnterstützt Konnektivität mit gängigen Arbeitstools wie Google Drive, Confluence, Slack und anderen.
- Slack-IntegrationErhalten Sie Antworten und Suchergebnisse direkt in Slack.
- BenutzerauthentifizierungBietet eine Zugriffsverwaltung auf Dokumentenebene.
- RollenmanagementUnterstützt die Rollenverwaltung für Administratoren und normale Benutzer.
- Persistenz des Chat-ProtokollsChat-Protokolle für spätere Rückfragen speichern.
- UI-KonfigurationBietet eine Benutzeroberfläche für die Konfiguration von KI-Assistenten und Prompts.
- multimodale UnterstützungUnterstützung für Dialoge mit Bildern, Videos usw. (geplant).
- Werkzeugaufruf und Proxy-KonfigurationBietet Tool-Aufrufe und Konfigurationsoptionen für Agenten (geplant).
Hilfe verwenden
Ablauf der Installation
- lokaler Einsatz::
- Laden Sie Docker herunter und installieren Sie es.
- Klonen Sie das GitHub-Repository von Danswer.
- Navigieren Sie im Terminal zum Projektverzeichnis und führen Sie
docker-compose aufwärts
Befehl. - Öffnen Sie Ihren Browser und besuchen Sie
http://localhost:8000
begonnen, Danswer zu nutzen.
- Cloud-Bereitstellung::
- Installieren Sie Docker auf der virtuellen Maschine.
- Klonen Sie das GitHub-Repository von Danswer.
- Navigieren Sie im Terminal zum Projektverzeichnis und führen Sie
docker-compose aufwärts
Befehl. - Konfigurieren Sie den Domänennamen und das SSL-Zertifikat, um einen sicheren Zugang zu gewährleisten.
- Kubernetes-Bereitstellung::
- Installation und Konfiguration eines Kubernetes-Clusters.
- Klonen Sie das GitHub-Repository von Danswer.
- Suchen Sie die Kubernetes-Bereitstellungsdatei im Projektverzeichnis und führen Sie den entsprechenden kubectl-Befehl aus, um sie bereitzustellen.
Richtlinien für die Verwendung
- Chat-Schnittstelle::
- Öffnen Sie die Danswer-Webanwendung, melden Sie sich an und gehen Sie zum Chat-Bildschirm.
- Wählen Sie das Dokument aus, mit dem Sie einen Dialog führen möchten, geben Sie eine Frage in natürlicher Sprache ein, und Danswer wird die entsprechende Antwort liefern.
- Maßgeschneiderter AI-Assistent::
- Erstellen Sie in der Administratoroberfläche einen neuen KI-Assistenten.
- Konfigurieren Sie die Tipps und die Wissensdatenbank des Assistenten und speichern Sie die Einstellungen.
- Wählen Sie im Chat-Bildschirm verschiedene KI-Assistenten aus, mit denen Sie sprechen möchten.
- Dokumentensuche::
- Geben Sie eine natürlichsprachliche Suchanfrage in die Suchleiste ein, und Danswer liefert relevante Dokumente und von der KI generierte Antworten.
- Unterstützt das Filtern und Sortieren von Suchergebnissen, um schnell die gewünschten Informationen zu finden.
- Slack-Integration::
- Installieren Sie die Danswer-App in Slack.
- Konfigurieren Sie die Verbindung von Danswer zu Slack, um den Zugriff auf relevante Kanäle zu autorisieren.
- Geben Sie eine Anfrage direkt in Slack ein, und Danswer liefert die Suchergebnisse und Antworten.
- Benutzerauthentifizierung und Rollenmanagement::
- Hinzufügen und Verwalten von Benutzern in der Administratoroberfläche.
- Konfigurieren Sie die Zugriffsrechte und Rollen der Benutzer, um die Datensicherheit zu gewährleisten.
- Persistenz des Chat-Protokolls::
- Alle Chats werden automatisch gespeichert und die Nutzer können den Verlauf jederzeit einsehen.
- Unterstützt das Durchsuchen und Filtern von Chat-Protokollen und erleichtert so das Auffinden vergangener Unterhaltungen.
Ausgewählte Funktionen
- Effiziente SucheBM-25: Kombination von BM-25 und präfixbasierten Einbettungsmodellen, um eine optimale hybride Suche zu ermöglichen.
- Kundenspezifische ModelleUnterstützt benutzerdefinierte Deep-Learning-Modelle und Lernen aus Benutzerfeedback.
- Mehrere EinsatzoptionenUnterstützt lokale, Cloud- und Kubernetes-Bereitstellungen und passt sich flexibel an die Bedürfnisse von Teams unterschiedlicher Größe an.
- multimodale UnterstützungKünftige Versionen werden Dialoge mit Bildern, Videos usw. unterstützen, um das Benutzererlebnis zu verbessern.
- Werkzeugaufruf und Proxy-KonfigurationBietet flexible Optionen für den Aufruf von Tools und die Konfiguration von Agenten, um den Anforderungen verschiedener Teams gerecht zu werden.
- Organisatorisches Verständnis und fachliche BeratungDanswer wird in der Lage sein, Experten im Team zu erkennen und entsprechende Ratschläge zu geben, um die Zusammenarbeit im Team zu verbessern.
System-Übersicht
Erläuterung der verschiedenen Systemkomponenten und Prozesse
Auf dieser Seite wird die Funktionsweise von Danswer in groben Zügen erläutert. Das Ziel ist es, unser Design transparenter zu machen. Auf diese Weise können Sie sich sicher fühlen, wenn Sie Danswer benutzen.
Wenn Sie das System anpassen oder als Open-Source-Mitarbeiter tätig werden wollen, ist dies ein guter Ausgangspunkt.
Systemarchitektur
Unabhängig davon, ob Danswer auf einer einzelnen Instanz oder einer Container-Orchestrierungsplattform eingesetzt wird, ist der Datenfluss derselbe. Dokumente werden über Konnektoren abgerufen und verarbeitet und dann dauerhaft in Vespa/Postgres gespeichert, die in Systemcontainern ausgeführt werden.
Die einzigen sensiblen Daten, die Ihre Danswer-Einrichtung verlassen, sind die, die LLM aufrufen, um eine Antwort zu generieren. Die Datenpersistenz der LLM-API hängt von den Bedingungen des LLM-Hostingdienstes ab, den Sie verwenden.
Wir weisen auch darauf hin, dass Danswer über einige sehr begrenzte und anonymisierte Telemetriedaten verfügt, die uns bei der Verbesserung des Systems helfen, indem sie Engpässe und unzuverlässige Datenverbindungen aufzeigen. Sie können die Telemetrie deaktivieren, indem Sie die Umgebungsvariable DISABLE_TELEMETRY auf True setzen.
eingebetteter Strom
Jedes Dokument ist in kleinere Teile, so genannte "Chunks", unterteilt.
Durch die Übergabe von Blöcken an den LLM anstelle des gesamten Dokuments können wir das Rauschen im Modell reduzieren, indem wir nur die relevanten Teile des Dokuments übergeben. Darüber hinaus wird dadurch die Kosteneffizienz erheblich verbessert, da LLM-Dienste in der Regel pro Token berechnet werden. Und schließlich können wir durch die Einbettung von Blöcken anstelle ganzer Dokumente mehr Details beibehalten, da jede Vektoreinbettung nur eine begrenzte Menge an Informationen kodieren kann.
Das Hinzufügen von Mikroblöcken vertieft dieses Konzept noch weiter. Durch die Einbettung verschiedener Größen kann Danswer Kontext und Details auf hoher Ebene abrufen. Mikroblöcke können auch über Umgebungsvariablen ein- und ausgeschaltet werden, da die Erzeugung mehrerer Vektoren pro Block die Indizierung von Dokumenten bei geringer Hardwareleistung verlangsamen kann.
Bei der Wahl unseres Einbettungsmodells verwenden wir den neuesten, hochmodernen dualen Encoder, der klein genug ist, um auf einer CPU zu laufen und gleichzeitig eine Abrufzeit von unter einer Sekunde zu gewährleisten.
Anfrage Prozess
Dieser Ablauf wird in der Regel aktualisiert, da wir ständig bestrebt sind, die Fähigkeiten der Abrufpipeline zu erweitern, um die neuesten Fortschritte der Forschungs- und Open-Source-Communities zu nutzen. Beachten Sie auch, dass viele der Parameter dieses Ablaufs, wie z. B. die Anzahl der abzurufenden Dokumente, die Anzahl der neu anzuordnenden Dokumente, die zu verwendenden Modelle, die an den LLM zu übergebenden Blöcke usw., konfigurierbar sind.