Skip to main content
Profy does not host your knowledge base; it connects to it. Your documents stay on their original platform and the expert reaches them through the official APIs. Nothing to import, nothing to migrate. On top of that, a connection can enable RAG indexing — a local copy of the documents, chunked and vector-indexed, replacing the platform’s own search. Indexing improves recall but introduces a new question: when does the index update? That is covered below.

Platforms and credentials

Credentials are stored encrypted and never appear in an API response. Every platform call uses a 30-second timeout.
Use credentials with the narrowest possible scope. Feishu and DingTalk use application-level tokens, so what the expert can read is exactly what that application was granted — the broader the grant, the more it sees.

Three steps

1

Bind the connector

Settings → Connectors, pick the platform, enter the credentials. It takes effect on save.
2

Tick the Knowledge plugin

Knowledge is a user_selectable plugin and must be ticked in the plugin panel. A connection alone is not enough — without the plugin the expert has no knowledge tools.
3

Just ask

You can name the platform (“search Feishu docs for OKR”) or not — without one, the expert searches every connected platform.

Five operations, and where platforms differ

The expert uses a single knowledge tool dispatched by action. Not every platform supports every operation:
DingTalk is read-only today. Asking the expert to “write the conclusion into a DingTalk doc” returns an explicit refusal: Platform 'dingtalk' does not support document creation. This is not a permissions issue — the adapter has no write implementation yet.Only IMA supports list_documents (browsing a knowledge base by directory). On other platforms, locating a document goes through search.
read deserves a note of its own: it downloads the document into the sandbox’s .knowledge/ directory, where the sandbox read tool parses it. So once a document has been read, it is an ordinary file in the workspace and any downstream tool can keep working on it. Write operations require the expert to pass the full body, not a summary — that is written into the tool contract.

How citations work

Search and read results both carry a citation_index. The expert marks paragraphs with [1], [2], merging consecutive markers into [1][2]. It never writes document titles inline — the UI renders those as clickable citation cards automatically. The same document keeps the same number throughout a conversation: read reuses the index search already assigned, so one source never ends up with two numbers.

Context budget

Retrieved results are truncated before entering the context:
  • About 3,000 characters per result
  • About 12,000 characters total per call
Anything beyond that never reaches the conversation. The point is to stop a single search from eating the whole context budget — when you need a document in full, read it specifically.

RAG indexing works, but does not refresh itself

This is the most important caveat on this page. Creating a connection triggers one full index automatically (ragEnabled defaults on). After that:
  • Periodic re-indexing is disabled in every deployed environment (KNOWLEDGE_SYNC_ENABLED is unset, defaulting to false)
  • So documents newly uploaded to the platform do not enter the index on their own
  • To bring the index up to date you must go to Settings → Knowledge and tap Sync manually
The expert knows this: after two consecutive empty searches it prompts you to sync manually rather than asserting “that document is not in your knowledge base.”
Index parameters: documents are chunked at 1,500 characters with 100 characters of overlap, into 1,024-dimensional vectors. Retrieval is hybrid — a vector pass and a keyword pass merged by RRF (reciprocal rank fusion, k=60), returning the top 10 by default and at most 30. A sync stuck in syncing for over 30 minutes is treated as timed out and marked as an error, after which it can be re-triggered. Syncing again while one is in flight returns 409 Sync already in progress (unless the previous one has timed out). Progress is written back every 5 seconds. When the embedding service degrades (over 80% of chunks come back without a vector), the sync fails loudly rather than leaving behind an index that looks built but retrieves nothing.
Connections without RAG use the platform’s native search API and have no freshness problem at all — if the platform can find a document you just created, so can the expert. Enabling RAG is a trade between recall quality and freshness.

Failures and what to do

The tool always returns a structured error and never throws into the conversation. The common classes: IMA keeps a 5-minute negative cache for unreadable items: repeatedly reading the same document does not hammer the API and returns the degraded result immediately. So a permission fix may take a few minutes to show up.

Billing

Connecting, listing, and refreshing credentials cost no credits. The only cost comes from retrieved content entering the conversation context, billed as token_split. Cost is proportional to how much document text is actually read in, not to the size of the knowledge base — connecting a base of several hundred thousand words is free; having the expert read five thousand words of it is not.
The most effective cost control is narrowing the search: naming a platform and a source_id is far cheaper than letting the expert sweep every connected platform.
Model rates are operational data — the model selector is authoritative; the algorithm is fixed, see billing formulas.

Keep reading

Knowledge RAG pipeline

How indexing and hybrid retrieval are implemented

Personalization

Connectors alongside other account-level settings

Feishu tools

The other Feishu path: document and Bitable tools

Plugin catalog

Activation conditions for the Knowledge plugin