投稿日
社内AIチャット:『TIS AIChatLab』の技術スタック公開
はじめに
TIS AIChatLabとは、社内情報と連携するRAGの仕組みを実装しているTIS社内の従業員向けの生成AIチャットサービスです。本記事では『TIS AIChatLab』の技術スタックをご紹介します。
補足:本記事の記載情報は、2024年10月時点のものです。全体構成や使用ライブラリはTIS AIChatLabプロダクトチームにて継続した改善と試行がされています。
目次
- サービス全体構成
- フロントエンド
- バックエンド
- インデックスの作成/ 検索・応答評価
サービス全体構成

ベースとなるクラウド環境はMicrosoft Azureです。フロントエンドにReact (TypeScript)、バックエンドにFastAPI (Python)、 Azure OpenAI Service、LangChainを使用しています。
社内文書のデータ解析には、 Azure Functionsを使用したマイクロサービスアーキテクチャを採用(クローリング、ドキュメント処理、評価など)。 SharePointやServiceNow®とシステム連携しており、それらをインプットに 複数のAzure AIサービス(OpenAI、Search、Document Intelligence、Speech)を統合したインテリジェントなドキュメント処理システムを構築しています。
UXモニタリングには、Azure Synapse Analyticsを組み合わせたデータ保存と分析基盤を使用しています。 Power BIに、ユーザー操作データ可視化し、UXモニタリング指標を週次でチームで確認しています。また、MagicPodによる自動テスト統合、ユーザー要求のオートラベル付けなど、継続的な精度向上をできる限り省力化する整備も進んでいます。
| カテゴリ | サブカテゴリ | 技術/サービス |
| フロントエンド | – | React, TypeScript |
| バックエンド | – | FastAPI, Python, LangChain |
| クラウドプラットフォーム | – | Microsoft Azure |
| アプリケーションホスティング | Azure App Service, Azure Functions | |
| データベース | Azure Cosmos DB | |
| データウェアハウス | Azure Synapse Analytics, Azure Blob Storage | |
| AI/ML サービス | 自然言語処理 | Azure OpenAI Service |
| 検索エンジン | Azure AI Search | |
| ドキュメント処理 | Azure AI Document Intelligence | |
| 音声認識/合成 | Azure AI Speech | |
| モニタリング | アプリケーション監視 | Azure Monitor (Application Insights) |
| BI ツール | Power BI | |
| インプットデータ連携 | 文書管理 | SharePoint |
| IT サービス管理 | ServiceNow® | |
| 実験管理 | – | Weights & Biases |
| E2Eテスト自動化 | – | MagicPod |
| バックログ管理 | – | Notion |
| コミュニケーション | – | Slack, Zoom, Teams |
フロントエンド
| カテゴリ | サブカテゴリ | 技術/ライブラリ |
| 基本環境 | 言語 | TypeScript |
| フレームワーク | UI | React |
| ルーティング | React Router | |
| スタイリング | CSS フレームワーク | Bootstrap |
| CSS プリプロセッサ | Sass | |
| ビルドツール | – | Vite |
| 状態管理 | データフェッチ | SWR |
| UI コンポーネント | コンポーネントライブラリ | React Bootstrap |
| アイコン | React Icons | |
| マークダウンレンダリング | react-markdown, remark-gfm | |
| コードハイライト | React Syntax Highlighter | |
| API通信 | イベントソース | @microsoft/fetch-event-source |
| プロキシ | http-proxy-middleware | |
| 音声認識 | – | Microsoft Cognitive Services Speech SDK |
| 開発ツール | リンター | ESLint |
| フォーマッター | Prettier | |
| タスクランナー | npm-run-all |
バックエンド
| カテゴリ | サブカテゴリ | 技術/ライブラリ |
| プログラミング言語 | – | Python |
| 依存関係管理 | – | Poetry |
| Web フレームワーク | ASGI サーバー | Uvicorn |
| WSGI サーバー | Gunicorn | |
| LLM フレームワーク | LangChain, LangServe | |
| LLM プロバイダー | Azure OpenAI Service | |
| クラウドサービス | DB | Azure Cosmos DB |
| ユーザー認証 | Microsoft Entra ID | |
| 検索エンジン | Azure AI Search | |
| 監視・テレメトリ | OpenTelemetry | Azure Monitor OpenTelemetry |
| OpenTelemetry Instrumentation | OpenAI, HTTPX, AIOHTTP Client | |
| メトリクス追跡 | Weights & Biases | |
| ユーティリティ | 環境変数 | python-dotenv |
| ID生成 | python-ulid | |
| 設定管理 | pydantic-settings | |
| タイムゾーン | tzdata | |
| 開発ツール | リンター | Flake8 |
| コードフォーマッター | Black, isort | |
| 静的型チェック | MyPy |
インデックスの作成/ 検索・応答評価
| カテゴリ | サブカテゴリ | 技術/ライブラリ |
| プログラミング言語 | – | Python |
| 依存関係管理 | – | Poetry |
| ドキュメント処理 | ストレージ | Azure Blob Storage |
| ドキュメント解析 | Azure AI Document Intelligence, Azure AI Document Intelligence, Azure AI Text Analytics | |
| 表形式データ | Pandas, PyArrow | |
| エクセルファイル | Openpyxl (Excel) | |
| PDF処理 | PyMuPDF | |
| Word文書 | python-docx | |
| HTML/テキスト抽出 | Trafilatura, Markdownify | |
| マークダウン | markdown | |
| 画像処理 | Pillow | |
| Web関連スクレイピング | BeautifulSoup4 | |
| エンコーディング | charset-normalizer | |
| 文字列処理 | regex, mojimoji | |
| 多言語NLP処理 | spaCy | |
| 開発ツール | 対話型開発環境 | Jupyter |
| コード品質 | Ruff, MyPy | |
| タスクランナー | taskipy | |
| 評価・実験管理 | メトリクス追跡 | Weights & Biases |
| データセット管理 | Hugging Face Datasets | |
| RAG 評価 | Ragas |
さいごに
社内情報と連携するRAGの仕組みを実装しているTIS社内の従業員向けの生成AIチャットサービス『TIS AIChatLab』の技術スタックを紹介しました。
