> For the complete documentation index, see [llms.txt](https://docs.airops.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.airops.com/docs/de/aktionen/workflow-concepts/workflow-steps/memory-steps/memory-search.md).

# Wissensdatenbank durchsuchen

Eine Wissensdatenbank semantisch durchsuchen

## Was ist ein Wissensdatenbank-Suchschritt?

Der Wissensdatenbank-Suchschritt ermöglicht es dir, deine Daten semantisch zu durchsuchen, um benutzerdefinierte Inhalte oder Empfehlungen für Nutzer bereitzustellen.

Weitere Informationen zum Einrichten einer Wissensdatenbank findest du auf unserer Dokumentationsseite [hier](/docs/de/kontext/memory-stores.md).

## So konfigurierst du einen Wissensdatenbank-Suchschritt

### Wählen Sie eine Knowledge Base aus

Wählen Sie den Namen Ihrer Knowledge Base aus dem Dropdown-Menü aus.

{% hint style="info" %}
**Dynamische Auswahl der Wissensdatenbank:** Du kannst Liquid-Variablen verwenden, um zur Laufzeit dynamisch auszuwählen, welche Wissensdatenbank durchsucht werden soll. Das ist nützlich, wenn du mehrere Wissensdatenbanken hast und zwischen ihnen basierend auf Workflow-Eingaben oder Ausgaben früherer Schritte wählen möchtest. Zum Beispiel: `{{input.knowledge_base_name}}`
{% endhint %}

### Maximale Ergebnisse

Wähle die Anzahl der Wissensdatenbank-Ergebnisse aus, die zurückgegeben werden sollen.

{% hint style="info" %}
Deine Inhalte werden in Blöcke von 1000 Tokens aufgeteilt, daher wird jedes Ergebnis etwa 1000 Tokens umfassen.
{% endhint %}

Wenn du feststellst, dass dein LLM nicht die exakten Ergebnisse zurückgibt, die du suchst, empfehlen wir, die Anzahl der Ergebnisse zu erhöhen und es zu bitten, sie zusammenzufassen.

### Wissensdatenbank filtern (optional)

Wissensdatenbanken haben zwei verschiedene Filtermodi. Verwende Filter, um deine Suche anhand von Metadaten einzugrenzen, einschließlich benutzerdefinierter Metadaten-Tags, die du deinen Wissensdatenbank-Dateien hinzugefügt hast.

#### Visueller Editor

Die **Visueller Editor** ermöglicht dir, Daten anhand beliebiger Metadatenfelder zu filtern, einschließlich:

* **Benutzerdefinierte Metadaten** die du hinzugefügt hast (z. B. Land, Produkt, Zielgruppe, Inhaltstyp)
* **Standardmetadaten** vom Quelltext geerbt
* **CSV-/Tabellenspalten** bei der Suche nach strukturierten Daten

Wenn du zum Beispiel Fallstudien mit einem `country` benutzerdefinierten Metadatenfeld versehen hast, kannst du filtern, um nur innerhalb von Fallstudien für eine bestimmte Region zu suchen:

<figure><img src="https://1960680173-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FX2n5yPRPynbnWuO4SH0M%2Fuploads%2Fgit-blob-6ed8ba8ef306c122c903c34554f8e93c2c24d5ea%2FWorkflow%20Steps%20%3E%20Data%20Steps%20%3E%20KB%20Search%20%3E%201st.png?alt=media" alt=""><figcaption><p>Einen Wert über den visuellen Editor filtern</p></figcaption></figure>

{% hint style="success" %}
**Dynamisches Filtern mit Eingaben**

Mache deine Filter dynamisch, indem du Workflow-Eingaben verwendest. Erstelle zum Beispiel eine Eingabe namens `region` und setze deinen Filter auf: Land ist gleich `{{input.region}}`. Wenn du jetzt den Workflow mit verschiedenen Regionenwerten ausführst, durchsuchst du nur die relevanten Wissensdatenbank-Dateien.
{% endhint %}

#### Code-Editor

Für komplexere Anwendungsfälle kannst du den **Code-Editor** verwenden, der die Query- und Projection-Operatoren von MongoDB nutzt. Hier sind einige gängige Operatoren:

* **$eq** - Gleich (für Zahlen, Zeichenfolgen, Boolesche Werte)
* **$ne** - Ungleich (für Zahlen, Zeichenfolgen, Boolesche Werte)
* **$gt** - Größer als (für Zahlen)
* **$gte** - Größer als oder gleich (für Zahlen)
* **$lt** - Kleiner als (für Zahlen)
* **$lte** - Kleiner als oder gleich (für Zahlen)
* **$in** - In Array (für Zeichenfolgen oder Zahlen)
* **$nin** - Nicht im Array (für Zeichenfolgen oder Zahlen)

Gehen wir ein kurzes Beispiel durch, wie du Metadaten in deinem Workflow mit unserer Vorlage „Q\&A“ filtern kannst. In diesem speziellen Beispiel haben wir unsere Wissensdatenbank bereits so befüllt, dass sie die Verfassungen mehrerer Länder enthält, sowie Metadaten, die auf das Feld „Land“ ausgerichtet sind und auf das gefiltert werden soll.

{% @arcade/embed url="<https://app.arcade.software/share/wdZVVd8LeM0QNGiSf9v9>" flowId="wdZVVd8LeM0QNGiSf9v9" %}

Damit das Filtern effektiv ist, empfehlen wir, unser [Dokument „Metadaten von Wissensdatenbanken“](/docs/de/kontext/memory-stores/memory-stores-metadata.md) durchzulesen, um sicherzustellen, dass du optimale Metadatenfelder zum Filtern bereitstellst.

### Abfrage

Die Phrase, die verwendet wird, um deine Wissensdatenbank nach semantisch ähnlichem Text zu durchsuchen.

Als Best Practice empfehlen wir, für deine Abfrage eine Liquid-Variable zu verwenden. Da deine Workflows sich an die von dir bereitgestellten Eingaben anpassen sollen, ist es in der Regel nicht ideal, deine Abfrage hart auf eine bestimmte Variable oder Frage zu codieren.

Da die Wissensdatenbank die *semantisch* ähnlichsten Ergebnisse zurückgibt, gibt es Zeiten, in denen die Bereitstellung einer langen Textzeichenfolge eher die gewünschten Ergebnisse liefert als eine gezielte, präzise Formulierung. Wir empfehlen dir, deinen Abfrage-Prompt zu testen, um sicherzustellen, dass er deinen Anforderungen am besten entspricht.

## Liquid-Variablen in Wissensdatenbank-Schritten

Liquid-Variablen funktionieren über ALLE Wissensdatenbank-Schritte hinweg, einschließlich:

* **Wissensdatenbank durchsuchen:** Verwende Liquid für Abfragen, Filter und die Auswahl der Wissensdatenbank
* **In Wissensdatenbank schreiben:** Verwende Liquid für Inhalts- und Metadatenwerte
* **Datei aus Wissensdatenbank abrufen:** Verwende Liquid für Dateibezeichner
* **Aus Wissensdatenbank lesen:** Verwende Liquid für die Datensatz-Auswahl

Dies ermöglicht vollständig dynamische Workflows, bei denen Wissensdatenbank-Operationen sich anhand von Eingaben oder Ausgaben früherer Schritte anpassen.

## Ausgabe des Wissensdatenbank-Suchschritts

Der Wissensdatenbank-Suchschritt gibt eine Liste von Embeddings aus der Wissensdatenbank aus.

* **ID:** Eine eindeutige ID basierend auf der Metadaten-Chunk-ID, Datensatz-ID und Dokument-ID des Vektor-Store.
* **Wertung:** Ein [Maß für semantische Ähnlichkeit](https://en.wikipedia.org/wiki/Cosine_similarity).
* **Inhalt:** Der Text (oder die Spalten) deines Dokuments, der durchsuchbar ist.
* **Dokumentname:** Name des von dir bereitgestellten Dokuments.
* **Dokument-Datei-URL:** Die URL der ursprünglichen Dokumentdatei, die du hochgeladen hast (falls vorhanden).
* **Metadaten:** Alle Spalten, die du als Metadaten bereitgestellt hast.

```
[
  {
    "id": "vsdi:87:rid:1:cid:0",
    "score": 0.78703,
    "content": "Blog-Titel: Wie man Prompt Engineer wird\\nBlog-Inhalt: In diesem Blog zeigen wir dir, wie du dein Prompting...",
    "document_name": "AirOps Wissensdatenbank",
    "document_file_url": "https://app.airops.com/your_document_file.pdf",
    "metadata": {
      "__chunk_id": 0,
      "__record_id": "1",
      "__vector_store_document_id": 87,
      "title": "Wie man Prompt Engineer wird",
      "description": "Erfahre, wie du dein Prompting auf das nächste Level hebst.",
    }
  },
  {
    ...
  }
 ]
```

### Formatierung deiner Ausgabe für LLM-Schritte

Die Ausgabe des Wissensdatenbank-Suchschritts ist ein JSON-Blob wie oben gezeigt. Da du diese Ausgabe jedoch häufig an ein LLM übergibst, ist es viel effektiver, die Ergebnisse in natürlicher Sprache zu formatieren.

#### Formatierung mit dem Code-Schritt

Eine der besten Möglichkeiten dafür ist, unseren Code-Schritt in Verbindung mit der Liquid-Syntax zu verwenden. Unsere Vorlage „Q\&A“ zeigt ein großartiges Beispiel dafür, wie du das erreichen kannst:

<figure><img src="https://1960680173-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FX2n5yPRPynbnWuO4SH0M%2Fuploads%2Fgit-blob-66e42d4e999883b4940929b36377fab732d28ee5%2Fmemory_search_2.png?alt=media" alt=""><figcaption></figcaption></figure>

Unser Code-Schritt verwendet JavaScript, um den JSON-Blob in ein natürlicheres Format umzuwandeln, das unser LLM-Schritt interpretieren kann:

```javascript
return step_1.output.map(item => `Dokumentenname: ${item.document_name}\nInhalt: ${item.content}\nVertrauenswert: ${item.score}`).join('\n\n');
```

#### Formatierung mit Liquid

Um dem LLM-Schritt Kontext und formatierte Daten zu übergeben, kannst du auch Liquid verwenden, um die Ergebnisse deines Wissensdatenbank-Suchschritts zu formatieren.

Wir ändern unsere frühere Beispieldausgabe oben, indem wir über jeden Chunk iterieren und Folgendes zurückgeben: `metadata.title` und `metadata.description`:

```liquid
// Ersetze step_x.output

{% for chunk in step_x.output %} 
    Titel: {{chunk.metadata.title}}
    Beschreibung: {{chunk.metadata.description}}
{% endfor %}
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.airops.com/docs/de/aktionen/workflow-concepts/workflow-steps/memory-steps/memory-search.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
