17個活躍的開源搜索引擎項目,知識內容相關應用解決方案的技術選型
搜索引擎一直都是我們發現、探索互聯網資源的寶貴工具,但隨著AGI的發展,有些人認為搜索引擎將會被取代。針對這個觀點,openAI的“奧特曼”在一次采訪中表示ChatGPT不會取代搜索,但有一天某個人工智能系統可以。
除了互聯網信息檢索之外,我們的很多解決方案仍然需要搜索引擎。比如企業內部的知識搜索、文檔資料檢索等。在一些基于大模型的AI知識庫解決方案中也會用到知識檢索的技術,例如LangChan。
本文主要介紹各種不同類別的搜索引擎及其獨特的功能,同時,推薦一些被廣泛使用的開源搜索引擎項目。
搜索引擎的類別
1.web搜索引擎
Web搜索引擎是最常見的搜索引擎。他們在互聯網上搜索信息,并將結果顯示給用戶。目前比較流行的網絡搜索引擎如:Google、Baidu、Bing和Yahoo。web搜索引擎抓取互聯網上的大量信息并使用復雜的算法來索引內容。它們允許用戶使用關鍵字或短語搜索信息,并在幾秒鐘內提供相關結果。
2.Meta搜索引擎
元搜索引擎不是直接搜索網頁,而是聚合來自其他搜索引擎的結果并將其顯示給用戶。元搜索引擎可以用于查找可能被單個搜索引擎遺漏的信息,以及比較來自不同搜索引擎的結果。元搜索引擎的例子如:Dogpile、MetaCrawler。
3.全文搜索引擎
全文搜索引擎是在文檔中搜索關鍵字或短語的搜索引擎。與傳統搜索引擎只搜索文檔中是否存在關鍵字不同,全文搜索引擎搜索文檔的整個文本。全文搜索引擎對于在大型文檔或文檔集合(如圖書館或數據庫)中查找特定信息非常有用。例如Elasticsearch、Apache Solr等就是用于全文檢索的引擎。
4.文檔搜索引擎
文檔搜索引擎是專門設計用于檢索文檔(如PDF、Word等文件)的搜索引擎。文檔搜索引擎對于在大型文件集合(如:文件服務器或文檔管理管理系統)中查找特定文檔非常有用。例如DocFetcher和SearchBlox就是文檔搜索引擎。
搜索引擎的類型很多,以上只是一部分,每一種都有自己獨特的功能和能力。
流行的開源搜索引擎
通過一些開源的搜索引擎的研究可以更深入理解搜索引擎的技術,了解搜索引擎發展的趨勢。下面是一些比較好的搜索引擎項目,并且這些項目目前還保持一定的活躍性。
1.Meilisearch
開源地址:https://github.com/meilisearch/meilisearch
開發語言:Rust
Meilisearch是一個擁有閃電般速度的搜索引擎,能夠輕松整合到應用程序、網站或者工作流。它可以塑造一個愉快的搜索體驗,并提供開箱即用的功能
2.Weaviate
開源地址:https://github.com/weaviate/weaviate
開發語言:Go
Weaviate是一個開源向量數據庫,存儲對象和向量,允許將向量搜索與結構化過濾相結合,具有云原生數據庫的容錯性和可擴展性,可以通過GraphQL、REST和各種語言開發的客戶端訪問,如:Java、Go、Python、JavaScript。
weaviate特別適合用于與ChatGPT等大語言模型進行整合。
3.Mwmbl
開源地址:https://github.com/mwmbl/mwmbl
開發語言:Python
Mwmbl是一個公益的、無廣告、自由、免費的搜索引擎,在可用性和速度方面特別優秀。但目前它還只不過是一個概念,是在一個小索引上實現Web前端和搜索技術的概念證明。
4.Elasticsearch
開源地址:https://github.com/elastic/elasticsearch
開發語言:Java
ES(Elasticsearch)是一個功能強大、用途廣泛的搜索引擎。ES旨在提供高速和高度相關的搜索結果,并針對超大數據集的實時搜索進行了全面優化。主要用于矢量搜索、全文搜索、日志、指標、APM和安全日志,為用戶提供全面且可擴展的解決方案,可根據其業務需求整合ES能力,進行定制化開發。
5.Searx
開源地址:https://github.com/searx/searx
開發語言:Python
Searx是一個免費的互聯網元搜索引擎,它聚合了來自70多個搜索服務的結果。Searx既不跟蹤也不分析用戶的行為。適合用于在線匿名搜索。
6.Milvus
開源地址:https://github.com/milvus-io/milvus
開發語言:Go
Milvus是一個云原生向量數據庫??蔀榍度胧较嗨菩运阉骱虯I應用提供支持。Milvus特別適合用于非結構化數據搜索,并且不論部署環境如何不同,它都提供一致的用戶體驗。它是開發以內容為中心的搜索應用程序以及大語言模型AI應用的存儲解決最佳方案之一。
7.Typesense
開源地址:https://github.com/typesense/typesense
開發語言:C++
Typesense是一個開源的搜索引擎,支持容忍錯別字,提供快速和用戶友好的搜索體驗。它使用先進的搜索算法,并且注重用戶隱私。Typesense適用于創建分面導航、地理搜索、向量搜索、語義搜索和相似性搜索等應用。
8.FlexSearch
開源地址:https://github.com/nextapps-de/flexsearch
開發語言:JavaScript
FlexSearch是一個用于全文搜索的JS庫,具備高速、靈活、零依賴等特性。它能夠處理大量數據,易于在各種應用程序中使用。
9.Whoogle Search
開源地址:https://github.com/benbusby/whoogle-search
開發語言:Python
Whoogle Search是一個元搜索引擎,沒有廣告、跟蹤器、AMP鏈接,也沒有Cookie或IP地址跟蹤??梢允褂肈ocker私有化部署,也支持在Arch Linux、Heroku或Fly.io上手動部署。
10.OpenSearch
開源地址:https://github.com/opensearch-project/OpenSearch
開發語言:Java
OpenSearch是一個開源分布式和RESTful搜索引擎。它是Elasticsearch和Kibana的開源分支。
11.Qdran
開源地址:https://github.com/qdrant/qdrant
開發語言:Rust
Qdrant是面向AI的高性能、大規模向量數據庫。它包含一個向量相似性搜索引擎和向量數據庫。開箱即用,提供方便的API,用于存儲、搜索和管理向量。Qdrant是專為過濾支持而定制的。這使得它對各種神經網絡或基于語義的匹配、分面搜索和其他應用程序都很有用。
12.Vespa——大數據搜索引擎
開源地址:https://github.com/vespa-engine/vespa
開發語言:Java、C++、Go
Vespa是開放式大數據服務引擎,可存儲、搜索、組織大數據并進行機器學習推理??稍谌魏畏諘r間和規模下搜索向量、張量、文本和結構化數據。
13.TNT Search
開源地址:https://github.com/teamtnt/tntsearch
開發語言:PHP
TNTSearch是一個開源的全文搜索引擎。它完全用使用PHP開發,具有高度的可移植性和易用性,能夠與PHP應用程序集成。
TNTSearch最主要的功能之一是支持詞干分析,這使得搜索結果更加準確和有效。支持多種語言的詞干分析,包括英語、克羅地亞語、阿拉伯語、意大利語、俄語、葡萄牙語和烏克蘭語。這意味著用戶可以用他們的母語搜索關鍵字,獲得準確的結果。
此外,TNTSearch還提供了一系列配置選項,以滿足用戶的特定需求。可配置數據庫類型,自定義索引過程,甚至實現自己的搜索算法。
14.miniSearch
開源地址:https://github.com/lucaong/minisearch
開發語言:JavaScript、TypeScript
MiniSearch是一個用JavaScript編寫的小型內存全文搜索引擎??梢栽贜ode或者瀏覽器中運行。
15.tinysearch
開源地址:https://github.com/tinysearch/tinysearch
開發語言:Rust
tinysearch是一個輕量級的、快速的全文搜索引擎。主要用于靜態網站內容檢索。tinysearch是用Rust編寫的,然后編譯成WebAssembly在瀏覽器中運行。
16.Monocle
開源地址:https://github.com/thesephist/monocle
開發語言:JavaScript
Monocle是一個靜態的單頁Web應用程序,從預構建的文檔索引運行。索引系統和Web應用程序本身都是用Ink編寫的。
下面是Monocle的架構圖:
17.YaCy
開源地址:https://github.com/yacy/yacy_search_server
開發語言:Java
YaCy是一個P2P(點對點)搜索引擎,允許用戶搜索互聯網上的信息。與傳統搜索引擎不同,YaCy不依賴于集中式服務器來存儲和索引數據。相反,它使用分布式節點網絡來索引,并在用戶之間共享數據。
搜索引擎的發展趨勢
隨著人工智能的發展,我們使用網絡和知識的方式正在改變,AI為搜索引擎提供了大量的功能,開始徹底改變我們的搜索方式。其中生成式AI和聊天機器人正在改變搜索體驗,打造高度個性化、對話式和直觀的方法。通過利用人工智能功能,搜索引擎可以產生相關和可靠的結果,同時根據個人偏好提供量身定制的建議。