はじめに

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』の技術スタックを紹介しました。

この記事が参考になったら左上の「いいね」ボタンを押して頂けると励みになります。