Knowledge APIは、構造化された知識を管理するためのインターフェースです。
const client = new NdxClient({
apiKey: process.env.NEURADEX_API_KEY,
projectId: 'your-project-id',
});
// Knowledge APIにアクセス
client.knowledge.search('クエリ');
client.knowledge.get('id');
client.knowledge.create({ ... });
メソッド一覧
| メソッド | 説明 |
|---|
search(query, options?) | セマンティック検索 |
get(id) | 詳細取得(フルコンテンツ + 関連ナレッジ) |
list() | 一覧取得 |
create(input) | 作成 |
bulkCreate(items) | 一括作成 |
update(id, input) | 更新 |
delete(id) | 削除 |
export() | エクスポート |
getHistory(id, options?) | 変更履歴取得 |
getEdges(id, options?) | 関連エッジ取得 |
search()
セマンティック検索を実行します。自然言語のクエリに対して、関連性の高いナレッジを返します。
検索結果にはフルコンテンツは含まれません。コンテンツが必要な場合はget()を使用してください。
パラメータ
戻り値
interface SearchResult {
id: string;
title: string;
tags: string[];
score: number; // 関連性スコア(0-1)
summary: string | null; // LLM生成の概要
contentTokens: number | null;
createdAt: string | null;
indexedAt: string | null;
}
使用例
// 基本的な検索
const results = await client.knowledge.search('認証の仕組み');
for (const result of results) {
console.log(`${result.title} (スコア: ${result.score.toFixed(2)})`);
}
// 結果数を指定
const topResults = await client.knowledge.search('返品', { limit: 5 });
get()
ナレッジの詳細を取得します。フルコンテンツと関連ナレッジが含まれます。
パラメータ
戻り値
interface KnowledgeViewResponse {
id: string;
title: string;
content: string;
tags: string[];
summary: string | null;
contentTokens: number | null;
createdAt: string;
updatedAt: string;
connectedKnowledge: ConnectedKnowledge[];
}
interface ConnectedKnowledge {
id: string;
title: string;
relationType: string;
weight: number;
isActive: boolean;
validFrom: string;
validUntil: string | null;
}
使用例
const detail = await client.knowledge.get('knowledge-id');
console.log(detail.title);
console.log(detail.content);
// 関連ナレッジを確認
for (const connected of detail.connectedKnowledge) {
console.log(`関連: ${connected.title} (${connected.relationType})`);
}
list()
プロジェクト内の全ナレッジを取得します。
戻り値
interface Knowledge {
id: string;
title: string;
content: string;
tags: string[];
createdAt: string;
updatedAt: string;
}
使用例
const allKnowledge = await client.knowledge.list();
console.log(`ナレッジ数: ${allKnowledge.length}`);
create()
新しいナレッジを作成します。
パラメータ
使用例
const knowledge = await client.knowledge.create({
title: 'Reactのフック入門',
content: `
Reactのフックは、関数コンポーネントで状態やライフサイクルを扱う仕組みです。
## useState
コンポーネントの状態を管理します。
## useEffect
副作用(API呼び出し、DOM操作など)を扱います。
`,
tags: ['React', 'フロントエンド', 'JavaScript'],
});
console.log(`作成完了: ${knowledge.id}`);
bulkCreate()
複数のナレッジを一括作成します。
パラメータ
使用例
const items = await client.knowledge.bulkCreate([
{
title: 'TypeScriptの基本',
content: 'TypeScriptは静的型付けを提供するJavaScriptのスーパーセットです。',
tags: ['TypeScript', 'プログラミング'],
},
{
title: 'Node.jsの基本',
content: 'Node.jsはサーバーサイドJavaScript実行環境です。',
tags: ['Node.js', 'バックエンド'],
},
]);
console.log(`${items.length}件作成完了`);
update()
既存のナレッジを更新します。
パラメータ
使用例
// タイトルのみ更新
const updated = await client.knowledge.update('knowledge-id', {
title: '新しいタイトル',
});
// コンテンツのみ更新
const updated = await client.knowledge.update('knowledge-id', {
content: '更新されたコンテンツ',
});
// 両方更新
const updated = await client.knowledge.update('knowledge-id', {
title: '新しいタイトル',
content: '更新されたコンテンツ',
});
delete()
ナレッジを削除します。
パラメータ
使用例
await client.knowledge.delete('knowledge-id');
console.log('削除完了');
export()
全ナレッジをエクスポート形式で取得します。
戻り値
Array<{ title: string; content: string }>
使用例
const exported = await client.knowledge.export();
// JSONとして保存
import fs from 'fs';
fs.writeFileSync('knowledge-backup.json', JSON.stringify(exported, null, 2));
getHistory()
ナレッジの変更履歴を取得します。作成・更新・削除のイベントを時系列で返します。
パラメータ
使用例
const history = await client.knowledge.getHistory('knowledge-id');
for (const episode of history) {
console.log(`${episode.episodeType}: ${episode.content}`);
console.log(` 理由: ${episode.changeReason}`);
console.log(` 実行者: ${episode.actorName}`);
console.log(` 日時: ${episode.occurredAt}`);
}
getEdges()
ナレッジに関連するエッジ(関連性)を取得します。
パラメータ
使用例
// アクティブなエッジのみ
const activeEdges = await client.knowledge.getEdges('knowledge-id');
// 履歴も含める
const allEdges = await client.knowledge.getEdges('knowledge-id', {
includeHistory: true,
});
for (const edge of allEdges) {
console.log(`${edge.title} (${edge.relationType})`);
console.log(` アクティブ: ${edge.isActive}`);
console.log(` 有効期間: ${edge.validFrom} - ${edge.validUntil ?? '現在'}`);
}
次のステップ