anhuiqiang 3bb061a246 message fix 1 Minggu lalu
..
scripts 9bee2e1cd2 2.0 2 minggu lalu
src 3bb061a246 message fix 1 Minggu lalu
.dockerignore 0702802317 init 3 minggu lalu
.env.sample 0702802317 init 3 minggu lalu
.prettierrc 0702802317 init 3 minggu lalu
Dockerfile 0702802317 init 3 minggu lalu
README.md 0702802317 init 3 minggu lalu
check_schema.js 005974129a bug fix 2 minggu lalu
chi_sim.traineddata 0702802317 init 3 minggu lalu
debug_es.js 005974129a bug fix 2 minggu lalu
eng.traineddata 0702802317 init 3 minggu lalu
es_results.txt 005974129a bug fix 2 minggu lalu
eslint.config.mjs 0702802317 init 3 minggu lalu
jpn.traineddata 0702802317 init 3 minggu lalu
metadata.db 005974129a bug fix 2 minggu lalu
nest-cli.json 0702802317 init 3 minggu lalu
package.json c00978484b 权限修改 1 Minggu lalu
pdf_to_images.py 0702802317 init 3 minggu lalu
schema_output.txt 005974129a bug fix 2 minggu lalu
test-error-handling.ts 0702802317 init 3 minggu lalu
test-vision-pipeline.ts 0702802317 init 3 minggu lalu
text_to_speech.py 0702802317 init 3 minggu lalu
tsconfig.build.json 0702802317 init 3 minggu lalu
tsconfig.json 0702802317 init 3 minggu lalu
yarn.lock 0702802317 init 3 minggu lalu

README.md

Simple Knowledge Base - バックエンドサービス (Server)

NestJS フレームワークで構築された RAG (検索拡張生成) ナレッジベースのバックエンドシステムです。ファイルの解析、ベクトルインデックス、ハイブリッド検索、およびマルチモデル管理機能を提供します。

🌟 主な特徴

  • インテリジェントなドキュメント処理: Apache Tika を統合し、PDF、Word、Markdown、TXT など多様な形式からのテキスト抽出をサポート。
  • 効率的なベクトル検索: Elasticsearch をベクトルデータベースとして使用。KNN ベクトル検索と全文検索を組み合わせたハイブリッド検索 (Hybrid Search) をサポート。
  • 柔軟な RAG エンジン: LangChain をベースに構築。チャンク分割ルール (Chunking) や再ランキング (Rerank) のカスタマイズが可能。
  • マルチモデルプロバイダー: OpenAI、Google Gemini、およびローカルデプロイの LLM モデルへの動的な接続をサポート。
  • 安全な管理機能: JWT による認証とユーザー権限管理機能を内蔵。

🛠️ 技術スタック

  • フレームワーク: NestJS (TypeScript)
  • データベース: SQLite (TypeORM)
  • 検索エンジン: Elasticsearch 8.x/9.x
  • AI フレームワーク: LangChain
  • ライブラリ: RxJS, Class-Validator

📋 前提条件

プロジェクトを実行する前に、以下の環境が整っていることを確認してください:

🚀 クイックスタート

1. インフラストラクチャの起動

プロジェクトのルートディレクトリ (simple-kb/) にある docker-compose.yml ファイルを使用して、Elasticsearch と Tika をクイック起動します。

# プロジェクトのルートディレクトリで実行
docker-compose up -d

起動成功後:

  • Elasticsearch: ポート 19200 をリスン (コンテナの 9200 ポートをマッピング)
  • Tika: ポート 9998 をリスン

2. 依存関係のインストール

server ディレクトリに移動し、パッケージをインストールします:

cd server
yarn install

3. 環境設定

プロジェクトは、基本設定を環境変数のファイルに基づきます。設定(特に Elasticsearch のアドレス)が正しいことを確認してください:

# データベースのパス
DATABASE_PATH=server/data/metadata.db

# JWT シークレット
JWT_SECRET=your_secure_secret

# Elasticsearch 設定 (docker-compose のポートと一致させてください)
ELASTICSEARCH_HOST=http://localhost:19200
ELASTICSEARCH_INDEX=knowledge_base

# Tika 設定
TIKA_HOST=http://localhost:9998

# ファイルアップロードの保存パス
UPLOAD_FILE_PATH=./uploads

4. サービスの起動

# 開発モード (推奨。ホットリロード対応)
yarn run start:dev

# 本番モードでのビルドと実行
yarn build
yarn run start:prod

バックエンドサービスはデフォルトで http://localhost:13000 で実行され、API プレフィックスは /api です。

🧪 テスト

# ユニットテスト
yarn run test

# E2E テスト
yarn run test:e2e

⚠️ 注意事項とヒント

  1. データベースの初期化:

    • 初回実行時に、TypeORM は server/data/ ディレクトリ配下に metadata.db (または設定された DB) を自動的に作成します。
    • 開発環境では synchronize: true により、テーブル構造が自動同期されます。
  2. Elasticsearch への接続:

    • Connection refused エラーが発生した場合は、Docker コンテナが正常に動作しているか確認してください (docker ps)。
    • サービス起動時に、knowledge_base という名前のインデックスが自動的に検出・作成されます。
  3. デフォルトのアカウント:

    • データベースをリセットした場合は、新規ユーザー登録を行うか、既存の管理データを参照してください。通常はフロントエンドの登録機能を使用して最初のユーザーを作成することをお勧めします。
  4. ファイルの解析:

    • 大容量のファイルをアップロードした場合、Tika による解析に数秒かかることがあります。フロントエンドの処理ステータスを確認しながらお待ちください。