メインコンテンツへスキップ
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?)関連エッジ取得

セマンティック検索を実行します。自然言語のクエリに対して、関連性の高いナレッジを返します。
検索結果にはフルコンテンツは含まれません。コンテンツが必要な場合はget()を使用してください。

パラメータ

query
string
必須
検索クエリ(自然言語)
options.limit
number
デフォルト:"10"
取得する結果の最大数

戻り値

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()

ナレッジの詳細を取得します。フルコンテンツと関連ナレッジが含まれます。

パラメータ

id
string
必須
ナレッジID

戻り値

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()

新しいナレッジを作成します。

パラメータ

title
string
必須
ナレッジのタイトル
content
string
必須
ナレッジの本文
tags
string[]
タグの配列

使用例

const knowledge = await client.knowledge.create({
  title: 'Reactのフック入門',
  content: `
    Reactのフックは、関数コンポーネントで状態やライフサイクルを扱う仕組みです。

    ## useState
    コンポーネントの状態を管理します。

    ## useEffect
    副作用(API呼び出し、DOM操作など)を扱います。
  `,
  tags: ['React', 'フロントエンド', 'JavaScript'],
});

console.log(`作成完了: ${knowledge.id}`);

bulkCreate()

複数のナレッジを一括作成します。

パラメータ

items
CreateKnowledgeInput[]
必須
作成するナレッジの配列

使用例

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()

既存のナレッジを更新します。

パラメータ

id
string
必須
ナレッジID
title
string
新しいタイトル
content
string
新しいコンテンツ

使用例

// タイトルのみ更新
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()

ナレッジを削除します。

パラメータ

id
string
必須
ナレッジID

使用例

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()

ナレッジの変更履歴を取得します。作成・更新・削除のイベントを時系列で返します。

パラメータ

id
string
必須
ナレッジID
options.limit
number
取得する履歴の最大数

使用例

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()

ナレッジに関連するエッジ(関連性)を取得します。

パラメータ

id
string
必須
ナレッジID
options.activeOnly
boolean
デフォルト:"true"
アクティブなエッジのみ取得
options.includeHistory
boolean
デフォルト:"false"
過去のエッジ(無効化されたもの)も含める

使用例

// アクティブなエッジのみ
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 ?? '現在'}`);
}

次のステップ

Memory API

コンテキスト組み立て

Episodes API

イベント・履歴の記録