메인 콘텐츠로 건너뛰기
Tasks API는 백그라운드 작업(재인덱싱, 엣지 재생성 등)을 관리하기 위한 인터페이스입니다.

개요

const client = new NdxClient({
  apiKey: process.env.NEURADEX_API_KEY,
  projectId: 'your-project-id',
});

// Tasks API 접근
const tasks = await client.tasks.list();
await client.tasks.run('task-id');

메서드 목록

메서드설명
list(options?)작업 목록 조회
get(taskId)특정 작업 조회
run(taskId)작업 실행
cancel(taskId)작업 취소
registerReindex(input)재인덱싱 작업 등록
registerEdgeRegeneration(input)엣지 재생성 작업 등록

작업 타입

타입설명
reindex지식 재인덱싱 (벡터 재생성)
edge_regeneration지식 간 엣지 재생성
knowledge_extraction문서에서 지식 추출
source_parse소스 문서 파싱
chunking텍스트 청크 분할
enrichment_processing지식 보강

작업 상태

상태설명
pending실행 대기 중
in_progress실행 중
done완료
failed실패

list()

작업 목록을 조회합니다.

파라미터

options.status
string
상태 필터: 'pending' | 'in_progress' | 'done' | 'failed'
options.type
string
작업 타입 필터
options.page
number
기본값:"1"
페이지 번호
options.limit
number
기본값:"50"
조회 건수

반환값

interface ListTasksResponse {
  data: BackgroundTask[];
  total: number;
  page: number;
  limit: number;
}

interface BackgroundTask {
  id: string;
  type: string;
  status: 'pending' | 'in_progress' | 'done' | 'failed';
  title: string;
  progress: number;
  result: object | null;
  error: string | null;
  createdAt: string;
  updatedAt: string;
}

사용 예

// 전체 작업 조회
const result = await client.tasks.list();
console.log(`작업 수: ${result.total}`);

// 대기 중인 작업만
const pending = await client.tasks.list({ status: 'pending' });

// 재인덱싱 작업만
const reindexTasks = await client.tasks.list({ type: 'reindex' });

run()

대기 중인 작업을 실행합니다.

파라미터

taskId
string
필수
작업 ID

사용 예

const result = await client.tasks.run('task-id');

if (result.success) {
  console.log('작업이 정상적으로 완료되었습니다');
} else {
  console.log('작업이 실패했습니다:', result.error);
}

registerReindex()

지식 재인덱싱 작업을 등록합니다. 지식 내용을 변경한 후 벡터 검색 정확도를 향상시키기 위해 사용합니다.

파라미터

knowledgeId
string
필수
대상 지식 ID
title
string
필수
작업 제목

사용 예

// 재인덱싱 작업 등록
const task = await client.tasks.registerReindex({
  knowledgeId: 'knowledge-id',
  title: 'Reindex: 제품 매뉴얼',
});

console.log(`작업 ID: ${task.id}`);

// 작업 실행
await client.tasks.run(task.id);

registerEdgeRegeneration()

지식 간 엣지(관계)를 재생성하는 작업을 등록합니다. 지식을 업데이트한 후 관계 그래프를 갱신하기 위해 사용합니다.

파라미터

knowledgeId
string
필수
대상 지식 ID
title
string
필수
작업 제목

사용 예

// 엣지 재생성 작업 등록
const task = await client.tasks.registerEdgeRegeneration({
  knowledgeId: 'knowledge-id',
  title: 'Edge Regeneration: 제품 매뉴얼',
});

// 작업 실행
await client.tasks.run(task.id);

유스케이스

일괄 업데이트 후 재인덱싱

async function bulkUpdateAndReindex(updates: Array<{id: string, content: string}>) {
  const tasks = [];

  for (const update of updates) {
    // 지식 업데이트
    await client.knowledge.update(update.id, {
      content: update.content,
    });

    // 재인덱싱 작업 등록
    const task = await client.tasks.registerReindex({
      knowledgeId: update.id,
      title: `Reindex: ${update.id}`,
    });
    tasks.push(task);
  }

  // 모든 작업 실행
  for (const task of tasks) {
    await client.tasks.run(task.id);
    console.log(`완료: ${task.title}`);
  }
}

작업 진행 모니터링

async function monitorTask(taskId: string) {
  while (true) {
    const task = await client.tasks.get(taskId);

    console.log(`${task.title}: ${task.status} (${task.progress}%)`);

    if (task.status === 'done') {
      console.log('작업 완료:', task.result);
      break;
    }

    if (task.status === 'failed') {
      console.error('작업 실패:', task.error);
      break;
    }

    // 5초 대기
    await new Promise(resolve => setTimeout(resolve, 5000));
  }
}

다음 단계

Knowledge API

지식 관리

Memory API

컨텍스트 조립