「練功文 – Elasticsearch Vector Search」


這是一個之前作語意搜尋 (semantic search) 的作品的改版。主要的改動是將向量資料庫改成 Elasticsearch vector database,另外還支援 debugpy & VS code Python debugger。

原始碼:
https://github.com/MrMYHuang/demo_langchain_es

之所以會想改用 Elasticsearch,是看到有些職缺有需求,而自己也想挑戰自己不熟的技術。我先照著這個入門教學影片學習:
https://youtube.com/playlist?list=PL_mJOmq4zsHbcdoeAwNWuhEWwDARMMBta&si=WHGsnQx6VjmQ6-dM
從中我學到 Elasticsearch 一項的技術 – 全文檢索 (full text search),它的原理很容易懂,就好比「一本書的索引」。我們都知道書的索引要怎麼用,比如想找某個專有名詞出現在書本的第幾頁,就會去查索引。書本的索引的結構就是一堆「某個名詞出現在書本哪幾頁」的對照,而 Elasticsearch full text search 也是利用文字的索引來快速搜索文件!只不過後者是記錄「文字出現在哪幾個文件,它們的文件 IDs」。

Elasticsearch 也跟上 AI 的浪潮,支援一項 LLM AI 應用的重要元素 – vector database。它可以作語意搜尋再搭配 LLM 作 retrival augmented generation (RAG) 的應用。我的這個作品就是 demo 與 Elasticsearch vector database 作串接。

不過 Elasticsearch 其實還有一項重要優勢:它的分散式處理能力。這一點才是它獨特、強大之處。不過我目前還沒做到這一塊😅就先聊到這裡。


Leave a Reply