Assivy

Knowledge

Library files, folders, sources, datasources, tags, and the search_knowledge tool.

Knowledge flows one way: files land in the Library, folders parse and embed them, sources are the parsed documents, and datasources keep folders filled from outside systems. Tags label sources along the way. Agents read it all through search_knowledge.

Library

One page for everything stored: uploads, chat attachments, and agent-generated files list together, because every file is a Source with an origin (upload, chat, or agent). Three tabs — Files, Folders, Skills — each its own path.

Uploading straight into the Library stores and previews the file but never parses or embeds it: not knowledge, just a file. These uploads take most document, image, audio, video, and archive types, up to 10 MB. Knowledge starts when a file is uploaded into a folder.

Folders

A folder is a knowledge base: a named collection of sources with its own parsing, chunking, and indexing settings. Names are unique, and your plan caps how many folders you can have.

SettingDefaultOptions
IndexingOff (on for folders a datasource creates)On embeds sources for vector search. Off still parses them and keeps the text, which stays reachable by keyword search and whole-document reads.
Parsing strategybasicnone (store files, never read them), basic, basic_with_visuals, structured, structured_with_visuals
Chunkingrecursive, 500 / 50recursive or token, with chunk size and overlap. Used only when indexing is on. The form takes size 100–2000 and overlap 0–500; overlap must be smaller than size.
SharingNot sharedWho may attach the folder in chat.

Folders are the exception to the platform sharing rule: absent sharing means not shared, so only people using an agent whose knowledge tool already covers the folder can attach it. Over the API, chunkStrategy takes type, chunk_size, and chunk_overlap.

Changing parsing or chunking reports how many sources went stale; reindexing is an idempotent background job, so re-running it after a partial failure picks up the remainder. Deleting a folder deletes its sources and their indexed chunks. It is refused while a datasource keeps its pages there — delete the datasource first.

Folder Settings

One workspace-wide setting for every folder, behind the gear on Library → Folders.

  • Embedding model — turns sources into vectors. Dimensions follow the model. If nothing is saved, creating the first folder sets BAAI/bge-large-en-v1.5 at 1024 dimensions. The Free plan embeds with FastEmbed only.
  • Image Reading — how text comes out of images and scanned pages. OCR (the default) reads locally at no cost. Vision model sends each image to a vision model you pick (gpt-6-luna by default, or gpt-6.1-sol, claude-sonnet-5-5, claude-opus-5-5, gemini-3.8-flash, gemini-4-argon), billed per image.
ModelProviderDimensions
text-embedding-3-largeOpenAI3072
text-embedding-3-smallOpenAI1536
text-embedding-ada-002OpenAI1536
BAAI/bge-large-en-v1.5FastEmbed1024
sentence-transformers/all-MiniLM-L6-v2FastEmbed384
voyage-3Voyage AI1024
voyage-3-liteVoyage AI512
text-embedding-004Google768

Pick the model before adding sources. Sources keep the vectors and image text they were processed with: after changing either setting, run Index on existing sources to process them again.

Sources

The single collection for all documents: files, pasted text, and web pages (a URL, with optional CSS selectors to keep or drop parts of the page). Each source carries its type, status, folder, tags, size, content, and sync provenance (which datasource and external version it came from). Titles are unique within a folder.

Files a folder accepts:

KindFormats
DocumentsPDF, Word (.doc, .docx), Excel (.xls, .xlsx), PowerPoint (.ppt, .pptx)
TextPlain text, Markdown, CSV, HTML, JSON, XML
ImagesJPEG, PNG, GIF — read by the Image Reading setting
VideoMP4, MOV, AVI, MKV, WebM, WMV, FLV — transcribed with Whisper

The largest file and the folder count depend on your plan:

PlanFoldersLargest file
Free110 MB
Basic225 MB
Starter550 MB
Pro20100 MB
EnterpriseUnlimited100 MB

A source moves through these statuses:

StatusMeaning
createdStored, not processed yet. Stays here in a none folder.
processingBeing parsed (and embedded).
processedText extracted, no vectors — the folder has indexing off.
indexedParsed and embedded; vector search finds it.
failedShows a one-sentence reason and a link to the trace whose logs hold the full text.

A source page has Preview and Chunks tabs. Chunks shows what indexing cut the source into, in document order, for indexed sources. The row menu re-runs processing: Index in an indexed folder, Extract otherwise.

The API covers the lifecycle: composable list (by folder, type, origin, or title), JSON create for text and web sources, multipart upload, a dry-run extract that parses without indexing, content streaming and byte replacement, a chunk list, and per-source get/update/delete/process. Uploads into a folder need the create permission; guest chat attachments don't.

POST /sources/search is the folder search box. It matches titles and retrieves content in one call, across every folder unless folderIds narrows it:

FieldDefaultNotes
query—Required.
strategysemanticsemantic, hybrid, fulltext, or auto (runs hybrid).
fieldsbothtitle, content, or both.
limit10Sources returned, max 50.
includeChunkTextfalseReturn each matching chunk in full.

Results come back in raw retriever order with no reranking, which makes the box the place to compare strategies before setting one on an agent. If retrieval is down, content falls back to scanning stored text and the response says so.

Searching knowledge

Agents read folders through the search_knowledge tool (see Tools). One configured tool gives the model up to three tools that share its folder scope: search_knowledge, plus list_folder_sources and read_source. The tool needs at least one folder. A chat turn's attached folders or scope.folderIds (see Chat) narrow it for that turn; when none of the tool's folders is in scope, the tool is not offered.

Options

Set on the tool. Out-of-range numbers clamp to the range.

OptionDefaultRangeEffect
folderIds—at least 1Folders the tool searches.
k (Top-K)201–100Results per call in previews mode.
searchStrategysemanticsee belowHow results are ranked.
overFetchRatio41–10Candidates pulled per result slot before filtering.
decomposeQueryoff—Split the query into sub-queries and fuse the results. The original query is always searched. Ignored when the call uses text_match.
maxSubQueries42–8Sub-queries, counting the original.
decomposeModelplatform default—Model for the split.
diversityGateon—Collapse near-duplicate chunks and cap each source's share.
maxChunksPerSource51–50That cap.
rerankon—An LLM judges each candidate's relevance. It is the only relevance gate: off, results come back in retriever order and the tool can't report that nothing relevant was found.
rerankTopNk1–100Results the reranker keeps.
rerankModelplatform default—Model for the rerank.
expandNeighborsoff—Stitch each hit together with the chunks around it. content mode only.
neighborWindow11–3Chunks fetched either side of a hit.
maxStitchedChars40001000–20000Character budget per stitched result.
exposeRetrievalStatsoff—Add a stats banner to the results card and a stats block to the result the model reads.
contextFiltersnone—Narrow results per user — see Context filters.

Retrieval modes

  • semantic — ranks by meaning. Catches paraphrase; can miss exact identifiers.
  • hybrid — meaning plus keyword ranking, fused. The best all-round recall.
  • fulltext — keyword ranking only, with no semantic drift. For error codes, names, and quoted strings.
  • auto — the model picks one of the three per call through the strategy input, defaulting to hybrid.

hybrid, fulltext, and auto need the keyword lane; without it they run as semantic.

Per-call inputs

What the model sends on each call:

InputValuesNotes
querytextRequired.
output_modepreviews (default), contentpreviews returns up to k hits with chunk id, title, snippet, and score. content returns the full text of the top 5 hits inline, with citations, so the model can answer in one call.
text_matchoff (default), all, any, phraseKeep only chunks containing every word, any word, or the exact phrase of query. Ranking still follows the strategy.
source_idssource idsRestrict the search to these sources.
folder_idsfolder idsOffered only when the tool covers more than one folder. Ids outside the tool's scope are ignored.
strategysemantic, hybrid, fulltextOffered only when searchStrategy is auto.

Calling again in the same turn skips chunks already returned, so a repeat query pages deeper. A beforeExecute hook receives { query } and may return a rewritten query; afterExecute can reshape the result.

Folders without vectors

Each folder is searched by what it holds:

  • Indexed — vector search with the full pipeline above.
  • Indexing off — keyword match over the extracted text. Hits are whole documents with a snippet.
  • Parsing none — nothing to search. The tool says the documents were stored without being read and points the model at list_folder_sources.

Reading whole documents

Search returns fragments, which is the wrong shape for "compare these two documents". The two companion tools cover that:

  • list_folder_sources — no inputs. Lists up to 200 documents with titles, sizes, folders, and whether each can be read; says when the list was cut off.
  • read_source — takes a source_id from that list and returns the document's text, up to 60,000 characters. Longer documents are truncated and say so. A document stored without being read returns an error rather than empty text.

Context filters

contextFilters narrows results to the caller's own records. Each rule is { field, operator, value }:

  • field — a chunk field such as metadata.source_id, or cf.<key> for a key in a source's metadata.
  • operator — eq (one value), any (one of a list), or except.
  • value — a static value, a list, or a placeholder such as ${user.id} or ${user.email}.

Filters fail closed: a placeholder that doesn't resolve, or an unsupported operator, drops the tool for the turn. With filters set, only indexed folders are searched, and list_folder_sources and read_source are not offered, since they can't apply the filters. There is no form for filters yet; set them through the API.

Datasources

Connectors that fill one folder from an external system and keep it in sync on a schedule. Two kinds: Notion (OAuth consent, then page sync) and crawl (website discovery within a scope). A connector owns its folder and creates it, with indexing on, when none is given — named after the Notion workspace, or after the crawl, whose default name is the site's host. Datasource names are unique.

  • Schedule is a five-field cron that runs at most every 15 minutes, in the organization's timezone. Leave it empty for manual-only sync.
  • Syncs are incremental. New and changed pages are fetched; unchanged ones are skipped. A crawl spots changes by the sitemap's last-modified date or a hash of the page. Pages gone from a complete listing are removed; a listing cut short by a cap removes nothing.
  • Preview runs a real discovery crawl and lists the pages it would read, with their depth and whether a cap stopped it. Sync is async (202 — follow the row's status).
  • Disconnect is for Notion: it drops the credentials and stops the schedule, keeping fetched pages. A crawl has nothing to disconnect — clear its schedule or delete it.
  • Delete stops the connector. Its pages stay in the folder as ordinary sources.

Crawl settings:

SettingDefaultRange
startUrl—Fixed after creation; repointing means a new crawl.
scopepathpath (under the start URL's path), host, subdomains
maxPages1001–5000
maxDepth30–10 link hops from the start URL
include / excludenoneUp to 50 path globs each. * stays within a segment, ** crosses them. Matched on path and query; exclude wins.
sitemapautoauto, only (never follow links), skip
includeSelectors / excludeSelectorsnoneUp to 50 CSS selectors each, applied to every page.

Robots.txt is always respected. Saving new crawl settings starts a sync; changing the selectors re-reads every stored page.

List rows carry folder, status (pending, active, syncing, error, revoked), schedule, last sync stats (scanned/created/updated/deleted/ skipped/failed), and account info — credentials never appear on the row; they live on the integration.

Tags

Lightweight labels with an optional color, attached to sources by name at upload or edit — the tag picker can create one on the spot. Names are unique, 1–64 characters; a source takes up to 100 tags. Managed as a global list.

On this page