好文分享 — 80 行程式碼做出 1 個搜尋引擎

A search engine in 80 lines of Python” 1 文分享怎麼用 80 行的 Python 程式碼做出搜尋引擎(含簡單的前端介面)。

其實搜尋在 AI 時代還是扮演很重要的角色,有時候我直覺還是使用搜尋引擎找資料,比起單單使用生成式 AI 更讓我放心一些些,主要原因是有時候 AI 生成的內容還是需要判斷真偽,所以需要搭配搜尋引擎尋做個簡單驗證。(所以私認為只要生成式 AI 還是會有 hallucination 的現象的話,是無法完全取代搜尋引擎的) 要做搜尋引擎其實也是一門學問,搜尋引擎的 4 個基本元件包含:

  1. 爬蟲(Crawler),將資料擷取回來。
  2. 資料管道(Data Pipeline),對資料進行清理、儲存、再表達(例如斷詞)、摘要等步驟。
  3. 反向索引(inverted index),將關鍵詞與資料來源做成 關鍵字 -> 資料來源 的對照結構,如此一來,使用者搜尋關鍵字時,就可以藉由關鍵字找出相關資料來源。
  4. 相關度排序(ranker),找出相關資料之後,需要將資料按照相關度從高到低排序,藉此改善使用者的體驗與效率(不排也可以,只是會很難用), Google 的 PageRank 就是有名的搜尋結果排序的演算法,但並不是只有 PageRank 可以使用, “A search engine in 80 lines of Python” 1 文是使用 BM25 (Elasticsearch 也有提供 BM25 演算法)。

雖然看起來很簡單,但實際上每個步驟都有各自的眉眉角角要克服,譬如光是第 2 步遇到多國語系的斷詞、摘要等步驟都是學術論文的研究領域啊⋯⋯(幾乎想像不到 Google 的搜尋引擎隱藏了多少不為人知的改進)。

不過想了解搜尋引擎運作的話,還是可以從 “A search engine in 80 lines of Python” 著手,它是搜尋引擎從想像到程式碼的開端。

FOLLOW US

對抗久坐職業傷害

研究指出每天增加 2 小時坐著的時間,會增加大腸癌、心臟疾病、肺癌的風險,也造成肩頸、腰背疼痛等常見問題。

然而對抗這些問題,卻只需要工作時定期休息跟伸展身體即可!

你想輕鬆改變現狀嗎?試試看我們的 PomodoRoll 番茄鐘吧! PomodoRoll 番茄鐘會根據你所設定的專注時間,定期建議你 1 項辦公族適用的伸展運動,幫助你打敗久坐所帶來的傷害!

贊助我們的創作

看完這篇文章了嗎? 休息一下,喝杯咖啡吧!

如果你覺得 MyApollo 有讓你獲得實用的資訊,希望能看到更多的技術分享,邀請你贊助我們一杯咖啡,讓我們有更多的動力與精力繼續提供高品質的文章,感謝你的支持!