สร้างระบบแนะนำสินค้าในอีคอมเมิร์ซด้วย LangChain, Ollama และ Open-source Embedding แบบ Local

บทความนี้จะสอนวิธีสร้างระบบแนะนำสินค้าอัจฉริยะสำหรับเว็บไซต์อีคอมเมิร์ซของคุณ
โดยใช้ LangChain, Ollama (รัน LLM ในเครื่อง) และ Embedding แบบโอเพ่นซอร์ส
ทุกอย่างรันได้ในเครื่องหรือเซิร์ฟเวอร์ส่วนตัว ไม่ต้องส่งข้อมูลลูกค้าไปที่ Cloud หรือ API ใด ๆ


ทำไมต้องใช้แนวทางนี้?

  • ข้อมูลลูกค้าปลอดภัย ไม่ต้องส่งออกนอกบริษัท
  • ไม่มีค่าใช้จ่าย API
  • ใช้โมเดล LLM แบบโอเพ่นซอร์ส (Llama 3, Mistral ฯลฯ) ได้ทันที
  • ยืดหยุ่น: ปรับใช้กับแค็ตตาล็อกสินค้า, FAQ, Knowledge base อะไรก็ได้

ภาพรวมโซลูชัน

ระบบนี้ประกอบด้วย 3 ส่วนหลัก:

  • SentenceTransformers สำหรับสร้าง embedding (เวกเตอร์) สินค้า
  • Chroma สำหรับ vector search แบบ local
  • Ollama รัน LLM (Llama 3, Mistral ฯลฯ) ในเครื่อง/เซิร์ฟเวอร์

แผนภาพ Data Flow

flowchart TD
    U["User Query<br/>(ตัวอย่าง: 'รองเท้าวิ่งกันน้ำสำหรับผู้หญิง')"]
    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 ฯลฯ)"]
    A["ผลแนะนำสุดท้าย<br/>(Chatbot ตอบกลับ)"]

    U --> Q
    Q --> V
    V -->|Top Matches| R
    R --> LLM
    LLM --> A
    P --> V

อธิบาย:

  1. ผู้ใช้ กรอกคำค้นหา (ธรรมชาติ)
  2. LangChain จะค้นหาสินค้าที่เกี่ยวข้องมากที่สุดด้วย Embedding และ Chroma
  3. สินค้าที่ได้จะถูกส่งต่อให้ LLM (Ollama) เพื่อสร้างข้อความแนะนำที่เป็นธรรมชาติ

ขั้นตอนการสร้างระบบ

1. เตรียมข้อมูลสินค้า

แนะนำให้อยู่ในรูปแบบ JSON เช่น

[
  {
    "id": "1",
    "name": "Nike Pegasus 39",
    "description": "รองเท้าวิ่งกันน้ำสำหรับผู้หญิง",
    "category": "Running Shoes",
    "tags": ["กันน้ำ", "วิ่ง", "ผู้หญิง"]
  }
]

2. ติดตั้งไลบรารีที่จำเป็น

pip install langchain-community langchain-core chromadb sentence-transformers 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]

# สร้าง embedding
embeddings = SentenceTransformerEmbeddings(model_name="all-MiniLM-L6-v2")

# สร้าง vector store
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("\nChatbot ตอบกลับ:")
print(response)

วิธีการทำงาน

  • Semantic Search: ระบบจะค้นหาด้วยความหมาย ไม่ใช่แค่คีย์เวิร์ด
  • Chroma Vector DB: ค้นหา similarity ได้เร็วและแม่นยำในเครื่อง
  • Ollama LLM: สร้างคำตอบหรือคำแนะนำในรูปแบบภาษาคนจริง ๆ

ต่อไปนี้คุณสามารถ...

  • เพิ่มฟีลด์ metadata เพื่อคำแนะนำที่ละเอียดขึ้น
  • เชื่อมกับหน้าแชท/หน้าเว็บของคุณ
  • ทดลองเปลี่ยน LLM ใน Ollama ได้หลายแบบ เช่น Mistral, Phi, Gemma ฯลฯ

พร้อมจะยกระดับระบบแนะนำสินค้าแบบไม่ต้องพึ่ง Cloud หรือ API ภายนอกแล้วหรือยัง?

ลองใช้โซลูชันนี้เลยครับ ทั้งฟรี ปลอดภัย และควบคุมได้เอง 100%!


หากมีคำถามหรืออยากเพิ่มฟีเจอร์อื่น ๆ ติดต่อได้เลยครับ


Get in Touch with us

Chat with Us on LINE

iiitum1984

Speak to Us or Whatsapp

(+66) 83001 0222

Related Posts

Our Products