Build a Local Product Recommendation System with LangChain, Ollama, and Open-Source Embeddings
In this post, you’ll learn how to create a fully local, privacy-friendly product recommendation engine for your e-commerce site using LangChain, Ollama (for LLMs), and open-source embeddings. No OpenAI API or external cloud needed—run everything on your machine or private server!
Why This Approach?
- Keep your customer data private
- Zero API cost—no pay-per-call fees
- Use powerful open-source LLMs (like Llama 3, Mistral)
- Flexible: works for product catalogs, FAQs, or any knowledge base
Solution Overview
We combine three key components:
- SentenceTransformers for generating semantic product embeddings.
- Chroma for efficient local vector search.
- Ollama to run LLMs (like Llama 3) locally, generating human-like recommendations.
Data Flow Diagram
Here’s how data flows through the system:
flowchart TD
U["User Query<br/>(e.g., 'waterproof running shoe for women')"]
Q["LangChain<br/>Similarity Search"]
V["Chroma Vector Store<br/>+ Embeddings"]
P["Product Data<br/>(JSON, CSV, DB)"]
R["Relevant Products"]
LLM["Ollama LLM<br/>(Llama 3, Mistral, etc.)"]
A["Final Recommendation<br/>(Chatbot Response)"]
U --> Q
Q --> V
V -->|Top Matches| R
R --> LLM
LLM --> A
P --> V
Flow:
- User enters a query.
- LangChain searches for the most relevant products using embeddings and Chroma.
- The matched products are passed to the LLM (via Ollama) to generate a friendly, personalized recommendation.
Step-by-Step Implementation
1. Prepare Product Data
Format your product catalog in a structured format like JSON:
[
{
"id": "1",
"name": "Nike Pegasus 39",
"description": "Waterproof women's running shoe",
"category": "Running Shoes",
"tags": ["waterproof", "running", "women"]
},
...
]
2. Install Required Packages
pip install langchain-community langchain-core chromadb sentence-transformers ollama
Make sure Ollama is installed and running with your chosen model (e.g., ollama pull llama3).
3. Python Code: Bringing It All Together
from langchain_community.llms import Ollama
from langchain_community.vectorstores import Chroma
from langchain_community.embeddings import SentenceTransformerEmbeddings
import json
# Load product data
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]
# Generate embeddings
embeddings = SentenceTransformerEmbeddings(model_name="all-MiniLM-L6-v2")
# Build vector store
vectorstore = Chroma.from_texts(texts, embeddings, metadatas=metadatas)
# User query
query = "waterproof running shoe for women"
results = vectorstore.similarity_search(query, k=2)
print("Recommended products:")
for r in results:
print("-", r.metadata['name'], "|", r.page_content)
# LLM: Generate final recommendation
llm = Ollama(model="llama3")
context = "\n".join([f"{r.metadata['name']}: {r.page_content}" for r in results])
user_question = f"Which of these products would you recommend for a woman who needs waterproof running shoes?\n\n{context}"
response = llm.invoke(user_question)
print("\nChatbot answer:")
print(response)
How Does It Work?
- Semantic Search: When the user asks for a product, we don’t just do keyword search—we find the closest matches in meaning using embeddings.
- Chroma Vector DB: Handles fast, efficient similarity search on your local machine.
- Ollama LLM: Receives the search results and generates a natural, human-like reply that feels like a real product expert.
What’s Next?
- Add more product metadata for richer answers.
- Connect this backend to your website’s chat UI.
- Swap in different LLMs with Ollama—try Mistral, Phi, Gemma, etc.
Ready to supercharge your e-commerce with open-source AI—without sending data to the cloud?
Try this setup, and your customers will enjoy smarter, more personal recommendations with full privacy and control.
Got questions or want more features? Leave a comment or contact me!
Get in Touch with us
Related Posts
- AI-Driven Legacy Modernization: Integrating Machine Intelligence into ERP, SCADA, and On-Premise Systems
- The Price of Intelligence: What AI Really Costs
- 为什么你的 RAG 应用在生产环境中会失败(以及如何修复)
- Why Your RAG App Fails in Production (And How to Fix It)
- AI 时代的 AI-Assisted Programming:从《The Elements of Style》看如何写出更高质量的代码
- AI-Assisted Programming in the Age of AI: What *The Elements of Style* Teaches About Writing Better Code with Copilots
- AI取代人类的迷思:为什么2026年的企业仍然需要工程师与真正的软件系统
- The AI Replacement Myth: Why Enterprises Still Need Human Engineers and Real Software in 2026
- NSM vs AV vs IPS vs IDS vs EDR:你的企业安全体系还缺少什么?
- NSM vs AV vs IPS vs IDS vs EDR: What Your Security Architecture Is Probably Missing
- AI驱动的 Network Security Monitoring(NSM)
- AI-Powered Network Security Monitoring (NSM)
- 使用开源 + AI 构建企业级系统
- How to Build an Enterprise System Using Open-Source + AI
- AI会在2026年取代软件开发公司吗?企业管理层必须知道的真相
- Will AI Replace Software Development Agencies in 2026? The Brutal Truth for Enterprise Leaders
- 使用开源 + AI 构建企业级系统(2026 实战指南)
- How to Build an Enterprise System Using Open-Source + AI (2026 Practical Guide)
- AI赋能的软件开发 —— 为业务而生,而不仅仅是写代码
- AI-Powered Software Development — Built for Business, Not Just Code













