Ground agents in
current knowledge.
Connic chunks, embeds, and indexes uploads and synced sources into ranked passages that agents retrieve by meaning at run time.
Read the retrieval docsrunbooks.release3 ranked passagesdeployment-rollbackscore 0.91Reactivate a previous successful deployment from the Deployments tab...
[deployment-rollback, p. 14]failed-build-responsescore 0.84A candidate that fails its deploy gate never replaces the active version...
[failed-build-response, p. 7]release-checklistscore 0.71Verify the active deployment after traffic moves, then retain the previous version...
[release-checklist, p. 3]
Index changing knowledge at its source
Put documents, images, and the systems your team already maintains through one semantic indexing path. Agents query the indexed passages at run time instead of carrying an old copy inside the prompt.
Track asynchronous ingestion from upload to index
Every upload returns to an ingestion job first, so the dashboard and API can show queued, processing, retrying, completed, or failed state.
- 1
Accept
Text, Markdown, data files, PDFs, and common image formats
- 2
Extract
Text parsing, PDF pages, or image vision extraction
- 3
Index
Asynchronous jobs chunk and embed the content
- 4
Query
Return passages after indexing completes
Text and data files
Upload TXT, Markdown, CSV, JSON, JSONL, YAML, and log files.
PDF documents
Extract and chunk PDFs while preserving page numbers in retrieval results.
Images
Run PNG, JPG, JPEG, GIF, and WebP files through vision extraction before embedding.
Expose one retrieval task with a fixed boundary
Keep namespace routing and search parameters in code. Give the model a typed question input and a stable passage-and-citation response.
from connic.tools import retrieval_query
async def search_release_runbooks(question: str) -> list[dict]:
"""Find approved release runbook passages."""
result = await retrieval_query(
query=question,
namespace="runbooks.release",
min_score=0.35,
max_results=3,
)
matches = []
for item in result.get("results", []):
matches.append({
"passage": item["content"],
"citation": {
"entry_id": item["entry_id"],
"namespace": item["namespace"],
"page_number": item.get("page_number"),
},
})
return matchessearch_release_runbooks responsedeployment-rollbackscore 0.91Reactivate a previous successful deployment from the Deployments tab...
Citation: [runbooks.release/deployment-rollback, p. 14]failed-build-responsescore 0.84A candidate that fails its deploy gate never replaces the active version...
Citation: [runbooks.release/failed-build-response, p. 7]release-checklistscore 0.71Verify the active deployment after traffic moves, then retain the previous version...
Citation: [runbooks.release/release-checklist, p. 3]
version: "1.0"
name: release-operator
type: llm
model: connic/gpt-5.6-terra
system_prompt: |
Answer release questions only from search_release_runbooks.
Cite the entry ID and page number returned with each passage.
tools:
- release_knowledge.search_release_runbooks
retrieval:
namespaces:
runbooks.release:
prevent_write: true
prevent_delete: true- Purpose-specific function
The model sees search_release_runbooks(question), not storage primitives.
- Fixed search scope
The wrapper owns runbooks.release, a 0.35 score floor, and a three-result limit.
- Read-only access
Agent YAML restricts retrieval to one namespace and prevents writes and deletes.
- Stable citations
Each passage carries entry ID, namespace, and page number in a fixed response shape.
- Testable behavior
Mock the wrapper and assert both the tool call and citation before deployment.
Sync sources and keep retrieval scope in code
Read-only sources and purpose-specific tools use the same environment-scoped retrieval. Raw primitives remain implementation blocks behind the contract you expose.
- Notion15 minutes → weekly
- Confluence15 minutes → weekly
- Superhuman Docs (Coda)15 minutes → weekly
- Website Crawler12 hours → weekly
Each scheduled run reprocesses changed content. Deletion behavior can remove source content from retrieval or retain its last synced version.
retrieval_queryCall from a purpose-specific read wrapper with fixed search scope.
retrieval_storeUse inside a controlled ingestion tool when an agent is allowed to write.
retrieval_deleteKeep deletion behind a narrow maintenance or operator function.
retrieval_list_namespacesUse for scoped discovery in administrative tooling.
Scope its content, choose a namespace, and set the refresh schedule.
Keep exploring
Storage
Pair semantic context with structured records.
Tools
Wrap retrieval primitives with fixed scope and permissions.
Models
Choose the model that reasons over the result.
Environments
Keep staging and production knowledge separate.
Production RAG tutorial
Build a scoped search tool, citation contract, and regression test.
Retrieval sources
Sync Notion, Confluence, docs, or websites.