RAGで社内ナレッジ検索をAIに奪われた話
社内ナレッジ検索RAGOpenAI EmbeddingsPineconePython
作業時間の変化
Before
月6時間
→
After
聞くだけ
奪われ度:
★★★★★
奪わせる前
社内のナレッジが散らばりすぎていた:
- Google Driveに設計書
- Confluenceに手順書
- Notionに議事録
- Slackの過去ログに暗黙知
新メンバーが「あの手順書どこですか?」と聞くたびに、ベテランが15分かけて探す。自分自身も「前にやったあの設定、どこに書いたっけ...」と毎週のように検索地獄に陥っていた。
全文検索はあるが、「〇〇のやり方」のような自然言語では引っかからない。結局、知っている人に聞くのが一番速い。これはスケールしない。
奪わせ方
RAG(Retrieval-Augmented Generation)を使って社内ナレッジボットを構築した。
from langchain.document_loaders import (
GoogleDriveLoader,
ConfluenceLoader,
NotionDBLoader,
)
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain.embeddings import OpenAIEmbeddings
from langchain.vectorstores import Pinecone
# 各ソースからドキュメントを読み込み
docs = []
docs.extend(GoogleDriveLoader(folder_id="...").load())
docs.extend(ConfluenceLoader(url="...", token="...").load())
docs.extend(NotionDBLoader(token="...", database_id="...").load())
# チャンクに分割してベクトル化
splitter = RecursiveCharacterTextSplitter(
chunk_size=1000,
chunk_overlap=200,
)
chunks = splitter.split_documents(docs)
# Pineconeに格納
embeddings = OpenAIEmbeddings()
Pinecone.from_documents(chunks, embeddings, index_name="knowledge")
Slack Botとして社内に公開し、自然言語で質問するだけで関連ドキュメントを引っ張ってきてくれるようにした。定期的にドキュメントを再クロールして最新状態を保つ仕組みも追加。
奪わせた感想
良かった点
- 「あのドキュメントどこ?」への回答が即座に
- 新メンバーのオンボーディング時間が大幅短縮
- 暗黙知がbot経由で共有されるようになった
学び
- RAGはチャンク分割の精度が命
- ドキュメントのメタデータ(更新日、作成者)を保持すると回答精度が上がる
- 「検索」から「質問」へのパラダイムシフトが社内文化を変えた
ナレッジ検索という地味だけど誰もが困っていた業務を奪わせることに成功。社内で一番感謝された自動化だった。