
มีโอกาสไปแบ่งปันความรู้เรื่อง Elasticsearch ในงาน Elastic Tech Community Exchange
ซึ่งจัดโดยทีมจาก Elastic นั่นเอง เป็นการกลับมาจัด meetup อีกครั้ง
โดยครั้งนี้มีหาร update ข้อมูลต่าง ๆ เพียบเลย เช่น
- ความสามารถใหม่ ๆ ใน Elastic stack และ product
- การนำ elastic stack ไปใช้งานใน use case ต่าง ๆ ทั้ง search, monitoring หรือ observability และ AI/ML เป็นต้น
ส่วนผมได้ไป share หัวข้อเกี่ยวกับ search ใน Elasticsearch นั่นเอง
มีรายละเอียดคร่าว ๆ ดังนี้
พอมองย้อนกลับไปพบว่า ใช้งาน Elasticseach มาตั้งแต่ version 0.9 กันเลยทีเดียว
โดย product ตัวนี้ก็มีการปรับเปลี่ยนมาตลอดเวลา
หัวข้อที่ผมทำการแบ่งปันไปคือ Search หรือการค้นหาด้วย Elasticserch นั่นเอง
น่าจะเป็นอีกเรื่องที่หลัง ๆ มาจะไม่ค่อยได้ share มากนัก
หรือหลาย ๆ ที่จะนำไปใช้กับการพวก observability มากกว่า
โดยการใช้งาน Elastic agent, beats และ logstash เช่น
- Log
- Trace
- Metric
ความสามารถในการค้นหาใน Elasticsearch 9 มีดังนี้
- Keyword หรือ lexical search
- Semantic search
- Hybrid search = Keyword + Semantic search
Keyword หรือ lexical search
คือการค้นหาจากการตัดคำ หรือ analyzer/tokenizer แล้วจะการผ่าน indexing
เป็นแนวทางปกติ ของการค้นหาข้อมูลใน Elasticsearch
Semantic search
เป็นการค้นหาข้อมูลที่ใช้ความหมาย หรือ context มากกว่า
และค้นหาแบบ multi-language ได้

โดยใช้ technique ต่าง ๆ ในการสร้างขึ้นมา เช่น
- Natural Language Processing (NLP)
- Machine Learning model โดยสามารถใช้งานผ่าน semantic_text type ที่มีให้ กับ ML model inference ที่ใช้ได้ใน Elasticsearch enterprise version เท่านั้น แต่ลองใช้ trail version ได้เช่นกัน จะทำการแปลงเป็น vector หรือ embedding ให้เองผ่าน ML model ที่สร้างขึ้นมา
- Vector type โดยใน Elasticsearch สามารถจัดเก็บข้อมูลในรูปแบบของ vector จึงสามารถทำงานร่วมกับ embedding model ต่าง ๆ ได้อีกด้วย

Hybrid search = Keyword + Semantic search

เป็นการปรับปรุงการค้นหาให้ถูกต้อง และ ถูกใจมากยิ่งขึ้น
โดย Elasticsearch ก็สนับสนุนการค้นหาเช่นนี้เช่นเดียวกัน
ตัวอย่างการ query ข้อมูล ทั้ง keyword และ semantic search ดังนี้
ลองศึกษาและใช้งานกันดูครับ
เอกสารในการแบ่งปันมีดังนี้
- Slide ที่ใช้ในการแบ่งปันอยู่ที่ Google Slide :: Elasticsearch
- Code ตัวอย่างของการใช้งาน RAG with Elasticsearch