A knowledge base holds documents your flows search by meaning, not by exact words: help pages, product sheets, policies, past answers. Its documents are cut into chunks, each chunk is turned into a vector with an OpenAI embedding model, and a search returns the chunks nearest a question. That's how an AI agent answers from your own documents (RAG).
Add a knowledge base
-
Go to Dataset › Knowledge and click Add knowledge base.
-
Pick the OpenAI key and its Embedding model (for example
text-embedding-3-small). DeepSeek has no embedding models, so it needs an OpenAI key. -
Set Dimensions:
1536fortext-embedding-3-small,3072for-large. Atext-embedding-3model can make shorter vectors (fewer dimensions: smaller, a little less precise). -
Choose where Vectors live:
Store What you need In mooflair (default) Nothing. Up to 100,000 chunks per base, searched by cosine similarity. In Qdrant A Qdrant credential (cluster URL and API key) and an existing Collection with the same dimensions. In Pinecone A Pinecone credential (its Control plane URL only for Pinecone Local or a private deployment), an existing Index with the same dimensions, and an optional Namespace. -
Choose how documents are cut:
Cut by How Paragraphs, then lines (default) Splits at paragraphs, then lines, sentences, words, so a chunk ends at a natural break. A separator Splits at your separator ( \n\nby default).Tokens Like the default, with Chunk size and Overlap counted in tokens (about 4 characters each). Chunk size (default 1,000 characters) is the longest a chunk gets. Overlap (default 200) repeats the end of one chunk at the start of the next, so a sentence cut in two still reads whole.
-
Set Who can use it, like every , then Add.
The embedding and the store can't change once the base holds chunks, because the old vectors wouldn't match the new model. Remove its documents first.
Add documents
Open a base from the list:
| Add | How |
|---|---|
| A file | PDF, DOCX, TXT, MD, CSV, HTML or JSON, up to 20 MB. Its text is read (HTML without its tags, scripts and styles). |
| A web page | Its URL (public addresses only): the page is fetched and its HTML turned into text. |
| Text | Typed or pasted, with a name. |
Each document shows how many chunks it gave. Remove deletes it and its chunks. Try a search shows the five nearest chunks for a question, with their scores (cosine, 0 to 1: closer is higher).
Use it in flows
- The searches a base (one item per passage), adds a document (text, or a file the item carries), or removes documents.
- An gets a knowledge tool: the model searches the base when it needs to, and reads the passages before it answers.
- The turns any text into a vector.
All of them go through the with the run's token.
Metadata
Every chunk keeps its document's metadata, plus documentId, name and its index in the document (a web page also keeps url, a file its file name). A search can filter on metadata, for example { "topic": "refund" }, so only matching chunks come back.
FAQ
How many chunks does a page of text make?
About 2 to 4 with the defaults: a page of text is roughly 3,000 characters, and chunks are at most 1,000 characters with 200 shared between neighbours.
Why does a search return nothing?
Either the base is empty, the Score at least setting is too high, or the metadata filter matches no chunk. Try the search on the base's page with no filter first.
Can I use another embedding provider?
Not yet: embeddings come from an OpenAI key. The vectors can live in your own Qdrant or Pinecone.