| title | Knowledge Source |
|---|---|
| description | Knowledge Source protocol schemas |
{/*
Knowledge Source — declarative metadata describing what to index and
which adapter to use.
A KnowledgeSource is the metadata-level equivalent of an
IDataEngine driver binding: it pairs a logical source description
(object/file/http) with the id of an IKnowledgeAdapter plugin
that will actually do the work. The adapter resolves the id at
runtime via IKnowledgeService.registerAdapter.
See content/docs/protocol/knowledge.mdx for the full design.
import { FileKnowledgeSource, HttpKnowledgeSource, KnowledgeRefreshPolicy, KnowledgeSource, KnowledgeSourceKind, ObjectKnowledgeSource } from '@objectstack/spec/ai';
import type { FileKnowledgeSource, HttpKnowledgeSource, KnowledgeRefreshPolicy, KnowledgeSource, KnowledgeSourceKind, ObjectKnowledgeSource } from '@objectstack/spec/ai';
// Validate data
const result = FileKnowledgeSource.parse(data);| Property | Type | Required | Description |
|---|---|---|---|
| kind | 'file' |
✅ | |
| prefix | string |
✅ | Storage prefix |
| mimeTypes | string[] |
optional |
| Property | Type | Required | Description |
|---|---|---|---|
| kind | 'http' |
✅ | |
| urls | string[] |
✅ | |
| userAgent | string |
optional |
| Property | Type | Required | Description |
|---|---|---|---|
| onRecordChange | boolean |
optional | |
| cron | string |
optional |
| Property | Type | Required | Description |
|---|---|---|---|
| id | string |
✅ | Snake_case source id |
| label | string |
✅ | |
| description | string |
optional | |
| adapter | string |
✅ | Adapter id |
| adapterConfig | Record<string, any> |
optional | |
| source | { kind: 'object'; object: string; contentFields: string[]; metadataFields?: string[]; … } | { kind: 'file'; prefix: string; mimeTypes?: string[] } | { kind: 'http'; urls: string[]; userAgent?: string } |
✅ | |
| embedding | { provider: Enum<'openai' | 'cohere' | 'azure_openai' | 'huggingface' | 'local' | 'custom'>; model: string; dimensions: integer; endpoint?: string; … } |
optional | |
| vectorStore | { provider: Enum<'pgvector' | 'chroma' | 'qdrant' | 'pinecone' | 'weaviate' | 'milvus' | 'redis' | 'opensearch' | 'elasticsearch' | 'custom'>; collection: string; endpoint?: string; secretRef?: string; … } |
optional | |
| refresh | { onRecordChange?: boolean; cron?: string } |
optional | |
| aiExposed | boolean |
optional |
This schema accepts one of the following structures:
| Property | Type | Required | Description |
|---|---|---|---|
| kind | 'object' |
✅ | |
| object | string |
✅ | Short object name to index |
| contentFields | string[] |
✅ | Fields contributing to document content |
| metadataFields | string[] |
optional | |
| where | Record<string, any> |
optional |
| Property | Type | Required | Description |
|---|---|---|---|
| kind | 'file' |
✅ | |
| prefix | string |
✅ | Storage prefix |
| mimeTypes | string[] |
optional |
| Property | Type | Required | Description |
|---|---|---|---|
| kind | 'http' |
✅ | |
| urls | string[] |
✅ | |
| userAgent | string |
optional |
| Property | Type | Required | Description |
|---|---|---|---|
| kind | 'object' |
✅ | |
| object | string |
✅ | Short object name to index |
| contentFields | string[] |
✅ | Fields contributing to document content |
| metadataFields | string[] |
optional | |
| where | Record<string, any> |
optional |