生成AIで自社データを学習・連携する方法!社内データを活用した事例も紹介

あなたの会社では、生成AIと自社データの連携はしていますか?
すでに、多くの会社が生成に自社データを学習させて連携しているので、まだしていないという方は、少し危機感を持った方がよいかもしれません。
しかし、どのように生成AIと自社データを連携させて業務効率化を図ればいいかわからない方も多いのではないでしょうか。
そこで本記事では、生成AIとデータ連携ができる業務と導入方法を解説します。読破された方は、生成AIとデータ連携を行う知識を得られ、業務効率化を図ることができます!
ぜひ、最後までご覧ください。
そもそも生成AIとは?従来のAIとの違いを紹介
生成AIとは、データやコンテキストから新しい情報やコンテンツを生成する能力を持つAI(人工知能)の一種です。
従来のAIとの主な違いをまとめました。
生成AI | 従来のAI | |
---|---|---|
タスク処理方法 | 機械学習を利用し、自動的にパターンを学習してタスク処理 | 人間が手動で定義したルールやパターンにそったタスク処理 |
未知のデータ処理 | 可能 | 不可 |
生成AIと自社データを連携させてできること5選
生成AIと自社データを連携させてできることをまとめました。
- 社内情報を検索
- コミュニケーションの自動化
- 新人教育の自動化
- 数式を使わないデータ分析
- 社内のノウハウを生かした案出し
この内容は、生成AIと自社データの組み合わせでしかできないため、要チェックです。
これら5つの項目は、それぞれ以下で詳しく解説します。
社内情報の検索
生成AIを活用して、自社がもっている社内文書やデータベースを自動的に分析し、関連する社内情報を検索できます。
自部署の調べものだと同僚や上司に聞けばすぐ回答が来るかもしれませんが、他部署の情報を調べる場合は時間がかかってしまうこともありますよね。
そのような場合は、生成AIを利用することで、AIが最適な情報を提供してくれるため、必要としている情報を迅速に得られます。
コミュニケーションの自動化
スケジュールや定型的な質問を生成AIに取り入れることでを使用して、社内外のコミュニケーションを自動化できます。
例えば、社内向けの場合、メールやWeb記事の自動生成を行い、社外向けの場合、ヘルプデスクのチャットボットとして利用できます。
これにより、ミーティングのスケジュール調整や定型的な質問への回答をAIが担当することで、従業員はより重要な業務に時間を費やせるのです。
新人教育の自動化
生成AIを用いて、新人教育の自動化を行えます。新入社員は、わからないことが多く聞きたいことも多いですよね。しかし、一つ一つを講師や先輩社員に確認するのはためらってしまうこともあります。
そんな時に生成AI相手に確認することでためらう必要ななくなり、ひとりひとりとコミュニケーションを取れるようになるため、より新人の理解度を高くできます。
また、過去の教育内容や資料を生成AIに取り入れることで、新しい教育資料の作成や修正をすばやく行ってくれるのも活用方法の1つです。
数式を使わないデータ分析
数式やプログラミングの知識がない人でも生成AIを使用したデータ分析が可能です。
特に「ひとりマーケター」と呼ばれるマーケティングを一人で行っているマーケティング部門におすすめです。
一人でマーケティングを行うにも限界があります。マーケティング情報を収集しても活用しきれないケースがあり、そのような時に生成AIを使うことでより精度の高いデータ解析ができ、業務を効率よく進められます。
社内のノウハウを活かした案出し
生成AIは大量の社内データや文書を学習し、企業内で蓄積されたノウハウを活かして新しいアイデアやプロジェクト案を提案できます。これはどんな部署でも利用できるためおすすめです。
特に効果が大きいのは経営陣の利用です。経営陣は自社の課題を解決しなければなりません。
生成AIを社内データと連携させることで、すばやく改善案を出してくれるため、新しいイノベーションを生み出せる可能性が高まります。
さらには、ソフトバンクグループ代表取締役会長兼社長の孫正義氏も生成AIの活用を謳っているため、今後はより身近に生成AIがなっていくでしょう。※1
なお、ChatGPTのアイデア力について知りたい方はこちらをご覧ください。

生成AIと自社データをフル活用した成功事例3選
実際に生成AIと自社データをフル活用した成功事例を3つ紹介します。
- ソフトバンク社
- インシリコ・メディシン社
- JR西日本カスタマーリレーションズ社
これらの内容を参考に自社で利用できないか検討してみてください。
【ソフトバンクの事例】自社データを生成AIとリンクさせて、顧客へ最適な商材を提案することに成功!
ソフトバンク社の営業部門では、20〜30代の若手社員に生成AIを営業用に最適化して、顧客へ最適な商材を提案することに成功しました。※2
ソフトバンクでは、提案書やお客さまとの取引事例、FAQなどの社内データを生成AIとリンクさせています。
例えば、既存顧客の情報を取り込んだ生成AIが取引履歴や傾向をもとに回答してくれるため、より顧客の求めている商材を提案できるのです。
【インシリコ・メディシン社の事例】自社データを生成AIとリンクさせて、開発期間・費用の大幅減に成功!
生成AIを使って、新薬の開発期間を3分の1、費用を10分の1にできた事例です。※3
AI創薬分野の第一人者であるインシリコ・メディシン社は、自社の学術論文や臨床試験の結果を生成AIにリンクさせました。
その結果、当初予定していた開発期間を3分の1、費用を10分の1にでき、新薬開発に大きな恩恵をもたらすことに成功し、多くの人々の役に立っています。
【JR西日本カスタマーリレーションズの事例】自社データを生成AIとリンクさせて、電話対応時間の削減に成功!
生成AIと電話問い合わせをテキスト化する業務時間を約54%削減できた事例です。※4
JR西日本お客様センターを運営するJR西日本カスタマーリレーションズは、月間で約7万件の電話問い合わせを受けており、サービス向上のため応対記録をすべてテキスト化している。
この業務に生成AIを導入することで、約14.1分が約6.5分となり約54%の削減に成功しました。
なお、その他ChatGPTの企業導入事例について知りたい方はこちらをご覧ください。

生成AIと自社データを連携させる方法4選
生成AIと自社データを連携させる方法をまとめました。
- ChatGPTの「Advanced data analysis」を活用する
- 生成AIと連携できるノーコードツールを活用する
- ベクトルデータベースを使う
- ゼロから基盤モデルを開発する
自社の環境や利用目的によって連携させる方法が異なります。
以下の4つをひとつずつ解説しますので、参考にしてください。
ChatGPTの「Advanced data analysis」を活用する
OpenAIのChatGPTの「Advanced data analysis」を活用する方法があります。
ChatGPTは言葉を理解できるため、データに関する質問やクエリを投げることで、高度な情報や予測を得ることができます。ChatGPTにデータ解析を依頼するだけでできますが、機密性は低くなり、社外に漏れても構わない情報しか利用できないため、注意してください。
生成AIと連携できるノーコードツールを活用する
ノーコードツールは、プログラミングの知識がなくてもAIを使ったタスクを構築できるプラットフォームです。例えば、データ分析や予測モデルの構築に関するタスクを視覚的なインターフェースで行えます。これにより、プログラミングスキルがない人でも簡単に生成AIの導入が可能です。
例として、ノーコードツールのkintoneなどがあります。※5
ベクトルデータベースを使う
ベクトルデータベースは、高次元のベクトルでデータを表現し、そのベクトル間の距離や関連性を計算するデータベースです。生成AIと組み合わせて、データベース内の情報を効率的に検索したり、クエリに対するベクトル表現を生成したりできます。これにより、類似性の高いデータを見つけたり、異常検知を行ったりできます。
ChatGPTとEmbedding APIを使わないとこの方法を利用できないため、注意してください。
ゼロから基盤モデルを開発する
専門のデータサイエンティストや機械学習エンジニアが、自社のデータに適したモデルを構築することも選択肢です。データの前処理、特徴量エンジニアリング、モデルのトレーニングなどを手動で行い、最適なモデルを構築できます。この方法は高度なカスタマイズが可能ですが、専門的なスキルが必要なため、注意しましょう。
生成AIに自社データを学習させる方法

生成AIに自社データを学習させる方法として、以下の3つが挙げられます。
- 生成AIで自社データを含めたプロンプトを入力する
- ファインチューニングで生成AIを自社向けに調整する
- RAG(Retrieval-Augmented Generation)を活用する
生成AIで社内データを活用する際、まずは自社データを学習させる必要があります。
それぞれの方法で、難易度や必要なコストなどが異なるので、自社にあった方法を見つけてみてください。
生成AIで自社データを含めたプロンプトを入力する

最も簡単でコストがかからないのが、生成AIで自社データを含めたプロンプトを入力する方法です。この方法を一言で表すと、プロンプトエンジニアリングとも呼ばれています。
やり方は簡単で、ChatGPTなどのチャット型のAIに対して、自社データをテキストやURLなどで含ませながら、質問やタスクの処理をお願いするだけ。
この方法は最も手軽ですが、安全性や機密性は低いので、社外に漏れて困る内容は学習させられません。
どうしても、社外秘の情報を生成AIに学習させたい場合は、ほかの方法で学習させましょう。
ファインチューニングで生成AIを自社向けに調整する
ファインチューニングとは、既存の生成AIのパラメーターを特定のタスクやデータセットに合わせて変更する手法のことです。自社データを学習させれば、自社業務に最適なモデルを生成できます。
ただし、設計や実装には高度なエンジニアスキルが求められるため、IT人材が不足している企業にとっては難易度が高めです。ファインチューニングを外注する選択肢もありますが、規模や内容次第では、コストが高額になるので注意してください。
また、ファインチューニングを行うと、ほとんどの場合はAPI経由で生成AIの機能を利用することになるので、従量課金で一定の費用がかかり続けます。
その分、高品質なモデルが完成するのは間違いないので、自社の事業規模や展望などを考慮しながら判断してみてください。
RAG(Retrieval-Augmented Generation)を活用する
RAGとは、生成AIがタスクをこなす際に、生成AIのデータベースと自社のデータベースにアクセスして、情報を検索するように設計する手法のことです。
プロンプトで自社データを読み込ませるよりも、はるかに多くの自社データを学習させられます。
また、常に最新の情報を共有できるので、回答内容に間違いが起きにくくなるのも大きなメリットです。
ただし、膨大な自社データにアクセスする分、回答までの所要時間が長くなりやすい点には注意しましょう。
自社データを活用してRAGを実装したChatbotをStreamlitで構築
ローカル環境でRAGを実装することはそこまで難しくないので、実際にRAGを実装したchatbotをstreamlitで構築してみましょう。
下記画像が完成画像です。

ローカル環境はPython 3.10を使用、必要なライブラリは以下です。
streamlit==1.31.0pdfplumber==0.10.3scikit-learn==1.3.2openai==1.14.0numpy==1.26.3
サンプルコードはこちら
import streamlit as stimport pdfplumberimport reimport osimport numpy as npfrom sklearn.feature_extraction.text import TfidfVectorizerfrom sklearn.metrics.pairwise import cosine_similarityimport openaiimport tempfile
st.set_page_config( page_title="PDF RAG アシスタント", page_icon="📚", layout="wide")
st.title("PDF RAG アシスタント")st.markdown("PDFをアップロードして、内容に関する質問をしてください。")
if 'pdfs' not in st.session_state: st.session_state.pdfs = {} # {filename: content}if 'vectorizer' not in st.session_state: st.session_state.vectorizer = Noneif 'doc_vectors' not in st.session_state: st.session_state.doc_vectors = Noneif 'is_index_built' not in st.session_state: st.session_state.is_index_built = Falseif 'chat_history' not in st.session_state: st.session_state.chat_history = []
openai_api_key = st.sidebar.text_input("OpenAI APIキー", type="password")if openai_api_key: openai.api_key = openai_api_key
def clean_text(text): text = re.sub(r'\n+', ' ', text) text = re.sub(r'\s{2,}', ' ', text) text = re.sub(r'\s+([.,;?!])', r'\1', text) return text.strip()
def extract_text_from_pdf(pdf_file): try: with pdfplumber.open(pdf_file) as pdf: text = "" for page in pdf.pages: try: extracted = page.extract_text() if extracted: text += extracted + "\n" except Exception as page_error: st.warning(f"ページの処理中にエラーが発生しましたが、続行します: {str(page_error)}") continue if not text.strip(): st.warning("PDFからテキストを抽出できませんでした。") return None return clean_text(text) except Exception as e: st.error(f"PDFからのテキスト抽出中にエラーが発生しました: {str(e)}") return None
def build_search_index(): try: # ドキュメントとファイル名の抽出 documents = list(st.session_state.pdfs.values()) filenames = list(st.session_state.pdfs.keys()) if not documents: st.warning("インデックスを構築するには、少なくとも1つのPDFファイルをアップロードしてください。") return False with st.spinner("検索インデックスを構築中..."): vectorizer = TfidfVectorizer( min_df=1, max_df=1.0, ngram_range=(1, 1), sublinear_tf=True ) doc_vectors = vectorizer.fit_transform(documents)
st.session_state.vectorizer = vectorizer st.session_state.doc_vectors = doc_vectors st.session_state.documents = documents st.session_state.filenames = filenames st.session_state.is_index_built = True return True except Exception as e: st.error(f"検索インデックスの構築中にエラーが発生しました: {str(e)}") return False
def search_documents(query, top_k=3): try: if not st.session_state.is_index_built: st.warning("先に検索インデックスを構築してください。") return [] if len(st.session_state.documents) == 1: return [{ "title": st.session_state.filenames[0], "content": st.session_state.documents[0], "score": 1.0 }] # クエリをベクトル化 try: query_vector = st.session_state.vectorizer.transform([query])
similarity_scores = cosine_similarity(query_vector, st.session_state.doc_vectors).flatten()
top_indices = similarity_scores.argsort()[-top_k:][::-1] results = [] for i in top_indices: if similarity_scores[i] > 0: # 類似度が0より大きい場合のみ含める results.append({ "title": st.session_state.filenames[i], "content": st.session_state.documents[i], "score": float(similarity_scores[i]) }) if not results and len(st.session_state.documents) > 0: results.append({ "title": st.session_state.filenames[0], "content": st.session_state.documents[0], "score": 0.1 # 暫定的なスコア }) return results except Exception as e: st.warning(f"検索中に問題が発生しました(フォールバック使用): {str(e)}") if len(st.session_state.documents) > 0: return [{ "title": st.session_state.filenames[0], "content": st.session_state.documents[0], "score": 0.1 }] return [] except Exception as e: st.error(f"ドキュメント検索中にエラーが発生しました: {str(e)}") return []
def generate_answer(results, query): if not openai.api_key: st.error("回答を生成するには、サイドバーにOpenAI APIキーを入力してください。") return None try: context = "\n\n".join([ f"ドキュメント: {r['title']}\n内容: {r['content'][:1500]}" for r in results ]) system_prompt = """あなたは提供された文書情報のみに基づいて、正確で役立つ回答を提供するインテリジェントなアシスタントです。 提供された文書に情報が見つからない場合は、その制限を認め、情報を作り上げることは避けてください。日本語で回答してください。""" user_prompt = f"質問: {query}\n\n以下の文書に基づいて、明確で正確な回答を提供してください:\n\n{context}"
# OpenAI APIの新しい呼び出し方法(OpenAI 1.0.0以降に対応) response = openai.chat.completions.create( model="gpt-3.5-turbo", messages=[ {"role": "system", "content": system_prompt}, {"role": "user", "content": user_prompt} ], max_tokens=500, temperature=0.5 ) return response.choices[0].message.content.strip() except Exception as e: st.error(f"回答生成中にエラーが発生しました: {str(e)}") # エラーの詳細なログ出力 import traceback st.error(f"詳細なエラー: {traceback.format_exc()}") return None
with st.sidebar: st.header("PDFのアップロード") uploaded_files = st.file_uploader("PDFファイルを選択", accept_multiple_files=True, type=['pdf'])
if uploaded_files: new_files = False for uploaded_file in uploaded_files: if uploaded_file.name not in st.session_state.pdfs: new_files = True with tempfile.NamedTemporaryFile(delete=False, suffix='.pdf') as tmp_file: tmp_file.write(uploaded_file.getvalue()) tmp_path = tmp_file.name with st.spinner(f"{uploaded_file.name}を処理中..."): pdf_text = extract_text_from_pdf(tmp_path) os.unlink(tmp_path) if pdf_text: st.session_state.pdfs[uploaded_file.name] = pdf_text st.success(f"正常に処理されました: {uploaded_file.name}") else: st.error(f"{uploaded_file.name}の処理に失敗しました")
if new_files: st.session_state.is_index_built = False if st.session_state.pdfs: st.subheader("アップロードされたPDF") for filename in st.session_state.pdfs.keys(): st.write(f"- {filename}") if not st.session_state.is_index_built: if st.button("検索インデックスを構築"): success = build_search_index() if success: st.success("検索インデックスが正常に構築されました!") else: st.success("検索インデックスが構築済みです") if st.button("インデックスを再構築"): success = build_search_index() if success: st.success("検索インデックスが再構築されました!")
st.header("PDFに関する質問")
for i, (q, a) in enumerate(st.session_state.chat_history): st.markdown(f"**質問 {i+1}:** {q}") st.markdown(f"**回答:** {a}") st.markdown("---")
query = st.text_input("質問を入力してください")
if query and st.button("回答を取得"): if not st.session_state.is_index_built: st.warning("質問に回答する前に、PDFをアップロードして検索インデックスを構築してください。") else: with st.spinner("関連ドキュメントを検索中..."): results = search_documents(query) if results: with st.spinner("回答を生成中..."): answer = generate_answer(results, query) if answer: st.markdown("### 回答:") st.write(answer)
st.session_state.chat_history.append((query, answer))
with st.expander("参照された文書"): for i, result in enumerate(results): st.subheader(f"文書 {i+1}: {result['title']}") st.text(f"関連度スコア: {result['score']:.4f}") st.text(result['content'][:500] + "..." if len(result['content']) > 500 else result['content']) else: st.error("回答を生成できませんでした。") else: st.warning("質問に関連する文書が見つかりませんでした。")
if st.session_state.chat_history and st.button("チャット履歴をクリア"): st.session_state.chat_history = [] st.experimental_rerun()
今回はstreamlitを消すとアップロードしたpdfも削除されてしまいますが、本番環境では専用サーバーにPDFを保存・管理することをお勧めします。これにより永続的なデータ保持が可能になり、自社データを効率的に活用できます。
自社データを学習させるメリット
自社データを学習させることで、より専門的な回答が可能・信頼性の向上・社内用語や略語にも対応できるというメリットがあります。
自社の業務マニュアルやFAQ、顧客対応履歴などを学習させることで、自社固有の情報に基づく回答が出力されます。また、社内で作成された情報をもとに回答が出力されるため、ハルシネーションが生じにくく、誤った情報が出力されるリスクを減らすことが可能。
さらに、生成AIでは理解が難しい社内の共通言語も学習するため、社内の質問応答や文章作成などの効率化も図れます。
自社データを学習させるデメリット
一方で、自社データを学習させるデメリットもあります。まず、学習させるデータが膨大になると、情報検索や応答に時間がかかる場合があります。特にRAGを用いた場合には、検索・生成フェーズに分かれるため時間がかかってしまいます。
また、導入・運用コストの高さもデメリットの1つです。ファインチューニングや専用インフラ構築には、人件費や計算リソース、セキュリティ体制構築など膨大なコストがかかってしまいます。
生成AIと自社データを連携させる際の注意点3つ
生成AIと自社データを連携させることの恩恵は大きいですが、注意すべき点もあります。
- 機密性の高いデータを扱うときはAPIを経由する
- 敵対的プロンプトへの対策を行う
- コンプライアンスや倫理に反した回答を阻止する
これら3点を詳しく解説します。
取り返しのつかないことにならないように、最後までお読みください。
機密性の高いデータを扱うときはAPIを経由する
機密性の高いデータを扱う際は、API経由にしましょう。
非常に機密性の高いデータを扱う場合、生成AIとのやり取りはAPIを経由し、データの転送や処理はセキュリティの高い手段を用いるべきです。
API経由にしないとデータは暗号化されず、最悪の場合、情報が漏洩してしまいます。
機密性の高いデータを生成AIと連携する場合は、APIを経由して安全な通信で行うようにしましょう。
敵対的プロンプトへの対策を行う
生成AIは与えられたプロンプトに基づいて応答を生成するため、悪意あるプロンプトや敵対的な入力に対する対策が必要です。特に公開されたAPIを使用する場合、適切なフィルタリングやセキュリティメカニズムを導入して、不適切なコンテンツの生成を防ぐことが重要です。
コンプライアンスや倫理に反した回答を阻止する
生成AIが特定のコンプライアンスや倫理基準に反した回答をしていないか確認しましょう。
不正確な情報の提供や差別的な表現を防ぐために、生成AIの出力を検証し、必要に応じてフィルタリングや修正を行う仕組みを構築することが大切です。必ず倫理的なガイドラインや法的な要件に則るような対応を行わなければなりません。※6
なお、AIリテラシーについて知りたい方はこちらをご覧ください。

よくある質問
ここからはよくある質問にQ&A形式で回答していきます。
生成AIを自社データに連結させよう!
生成AIを自社データに連携させると、以下5つのことができるようになります。
- 社内情報を検索
- コミュニケーションの自動化
- 新人教育の自動化
- 数式を使わないデータ分析
- 社内のノウハウを生かした案出し
連携させる方法は以下の4つがあります。
- ChatGPTの「Advanced data analysis」を活用する
- 生成AIと連携できるノーコードツールを活用する
- ベクトルデータベースを使う
- ゼロから基盤モデルを開発する
自社データと生成AIを連携させる際は、第一ステップとして自社データを学習させる必要があります。
そのための手段として、本記事では以下3つの手法を紹介しました。
- 生成AIで自社データを含めたプロンプトを入力する
- ファインチューニングで生成AIを自社向けに調整する
- RAG(Retrieval-Augmented Generation)を活用する
自社データを生成AIに学習させて連携させれば、業務効率化に大きく貢献できますが、同時に以下3つの点に注意する必要もあります。
- 機密性の高いデータを扱うときはAPIを経由する
- 敵対的プロンプトへの対策を行う
- コンプライアンスや倫理に反した回答を阻止する
生成AIを正しく活用して、安全な業務運用を心がけましょう。

生成系AIの業務活用なら!
・生成系AIを活用したPoC開発
・生成系AIのコンサルティング
・システム間API連携
最後に
いかがだったでしょうか?
生成AIと自社データを連携させて業務効率化を実現した企業が次々と成果を出しています。貴社に最適な導入方法を探ってみませんか?
株式会社WEELは、自社・業務特化の効果が出るAIプロダクト開発が強みです!
開発実績として、
・新規事業室での「リサーチ」「分析」「事業計画検討」を70%自動化するAIエージェント
・社内お問い合わせの1次回答を自動化するRAG型のチャットボット
・過去事例や最新情報を加味して、10秒で記事のたたき台を作成できるAIプロダクト
・お客様からのメール対応の工数を80%削減したAIメール
・サーバーやAI PCを活用したオンプレでの生成AI活用
・生徒の感情や学習状況を踏まえ、勉強をアシストするAIアシスタント
などの開発実績がございます。
まずは、「無料相談」にてご相談を承っておりますので、ご興味がある方はぜひご連絡ください。

「生成AIを社内で活用したい」「生成AIの事業をやっていきたい」という方に向けて、生成AI社内セミナー・勉強会をさせていただいております。
セミナー内容や料金については、ご相談ください。
また、サービス紹介資料もご用意しておりますので、併せてご確認ください。

【監修者】田村 洋樹
株式会社WEELの執行役員として、AI導入支援や生成AIを活用した業務改革を中心に、アドバイザリー・プロジェクトマネジメント・講演活動など多面的な立場で企業を支援している。
これまでに累計25社以上のAIアドバイザリーを担当し、企業向けセミナーや大学講義を通じて、のべ10,000人を超える受講者に対して実践的な知見を提供。上場企業や国立大学などでの登壇実績も多く、日本HP主催「HP Future Ready AI Conference 2024」や、インテル主催「Intel Connection Japan 2024」など、業界を代表するカンファレンスにも登壇している。