LangChainとOllama、オープンソース埋め込みで作るローカル商品レコメンドシステム
この記事では、LangChain、Ollama(ローカルLLM)、および**オープンソースの埋め込み(Embeddings)**を使い、
クラウドや外部API不要の「完全ローカル」な商品レコメンドエンジンを自作する方法を解説します。
このアプローチのメリット
- 顧客データが外部に出ない(プライバシー重視)
- API利用料がゼロ
- Llama 3やMistralなどオープンソースLLMがすぐ使える
- 柔軟性抜群(商品カタログ・FAQ・社内ナレッジにも応用可)
ソリューション全体像
仕組みは主に3つのコンポーネントから成り立ちます:
- SentenceTransformers:商品の意味情報をベクトル化
- Chroma:ローカルで動くベクトルDB(高速検索)
- Ollama:ローカルLLMサーバー(Llama 3、Mistralなど)
データフロー図
flowchart TD
U["ユーザーの質問<br/>(例:『女性用の防水ランニングシューズが欲しい』)"]
Q["LangChain<br/>類似検索"]
V["Chromaベクトルストア<br/>+埋め込み"]
P["商品データ<br/>(JSON, CSV, DB)"]
R["該当商品"]
LLM["Ollama LLM<br/>(Llama 3, Mistral など)"]
A["最終レコメンド<br/>(チャットボット応答)"]
U --> Q
Q --> V
V -->|最も近い候補| R
R --> LLM
LLM --> A
P --> V
流れの概要:
- ユーザーが自然言語で検索
- LangChain+Chromaが埋め込み検索で商品候補を抽出
- 候補リストをOllama LLMに渡し、自然な説明・推薦文を生成
実装ステップ
1. 商品データを用意する
たとえばJSON形式で:
[
{
"id": "1",
"name": "Nike Pegasus 39",
"description": "女性向けの防水ランニングシューズ",
"category": "ランニングシューズ",
"tags": ["防水", "ランニング", "女性"]
}
]
2. 必要なライブラリをインストール
pip install langchain-community langchain-core chromadb sentence-transformers ollama
Ollama公式サイトの手順でOllamaをインストールし、
例:ollama pull llama3 でモデルをダウンロードしてください。
3. Pythonサンプルコード
from langchain_community.llms import Ollama
from langchain_community.vectorstores import Chroma
from langchain_community.embeddings import SentenceTransformerEmbeddings
import json
# 商品データを読み込み
with open('products.json', encoding='utf-8') as f:
products = json.load(f)
texts = [p['description'] for p in products]
metadatas = [{"id": p["id"], "name": p["name"], "category": p["category"], "tags": p["tags"]} for p in products]
# 埋め込みを生成
embeddings = SentenceTransformerEmbeddings(model_name="all-MiniLM-L6-v2")
# ベクトルストア作成
vectorstore = Chroma.from_texts(texts, embeddings, metadatas=metadatas)
# 商品検索
query = "女性向けの防水ランニングシューズ"
results = vectorstore.similarity_search(query, k=2)
print("おすすめ商品:")
for r in results:
print("-", r.metadata['name'], "|", r.page_content)
# LLM(Ollama)で推薦文を生成
llm = Ollama(model="llama3")
context = "\n".join([f"{r.metadata['name']}: {r.page_content}" for r in results])
user_question = f"この中から、女性向けの防水ランニングシューズとしておすすめを教えてください。\n\n{context}"
response = llm.invoke(user_question)
print("\nチャットボットの回答:")
print(response)
仕組みのポイント
- 意味ベース検索:キーワードだけでなく文脈・意味で検索
- ChromaベクトルDB:ローカル&高速
- Ollama LLM:自然な推薦文を自動生成
さらに発展するには?
- 商品情報(メタデータ)を増やしリッチな回答へ
- WebのチャットUIやLINEボット等と連携
- OllamaでさまざまなLLMを試す(Mistral、Phi、Gemmaなど)
あなたのECサイトを、クラウドレス&完全自社管理AIで進化させよう!
この仕組みなら、無料&プライバシーフレンドリー。
質問や実装サポートもお気軽にご連絡ください!
Get in Touch with us
Related Posts
- AIによる予知保全 ― センサーから予測モデルまでの全体像
- 会計業務におけるAIアシスタント ― できること・できないこと
- なぜ中小企業はERPカスタマイズに過剰なコストを支払ってしまうのか — そしてその防ぎ方
- なぜ SimpliShop を開発したのか —— 日本の中小企業の成長を支えるための新しい EC プラットフォーム
- ファインチューニング vs プロンプトエンジニアリングを徹底解説 ― 日本企業がAIを活用するための実践ガイド ―
- 精密灌漑(Precision Irrigation)入門
- IoTセンサーよりも重要なのは「データ統合」―― スマート農業が本当に抱える課題とは
- モバイルアプリ開発提案書(React / React Native)
- AIバーティカル・インテグレーション:日本企業のDXを加速し、データ駆動型の高効率な組織へ
- 日本企業向け:AI導入を一歩ずつ進める実践ガイド 2025
- EVフリート管理は「AI最適化」が鍵
- 製造業とビジネスを変革する 7つの Machine Learning(機械学習)活用事例
- LSTMによる洪水・水位予測:日本の防災を強化するAIアプローチ
- SimpliMES Lite — 日本の中小製造業向け MES 提案書(日本語版)
- 介護ロボットとオープンソース技術 — 超高齢社会を支える未来のケアテクノロジー
- 中堅・中小製造業のためのスマートファクトリー入門
- 日本企業がAI搭載のカスタムシステムへ移行する理由
- なぜ成功しているオンラインストアは SimpliShop を選ぶのか — ビジネスを「作る・育てる・勝ち続ける」ための新しい標準
- AIの垂直統合(Vertical Integration of AI)—— これからのビジネスを決定づける新しい運営モデル
- AI予測システム — あなたの意思決定を“超能力”へ













