系列教程 | 用Jina搭建PDF搜索引擎Part 3
前兩篇文章講解了PDF搜索的操作方法,本期推送將講解構(gòu)建PDF搜索引擎的經(jīng)驗和教訓(xùn)。
之前我們以一個案例為代表講述的PDF搜索引擎的構(gòu)建,并不能包攬全部PDF搜索的種類和情況。
我們的初始版本如下:
https://github.com/alexcg1/example-pdf-search/
它旨在:
01
具有通用性,并能很好地處理任何類型的PDF數(shù)據(jù)(強調(diào)工作良好 -?僅僅返回結(jié)果并不意味著它是好的 - 它需要返回高質(zhì)量的結(jié)果)。
02
跨模態(tài)搜索,因此你可以使用圖像/文本作為輸入/輸出。
初始版本結(jié)果
結(jié)果是次優(yōu)的。我將一些從維基百科下載的 PDF?文件作為示例數(shù)據(jù)集,從那兒我們可以找到任何事物的維基百科搜索頁面。
但數(shù)據(jù)科學(xué)的基本規(guī)則是:絕大部分的工作都在于根據(jù)用例做數(shù)據(jù)預(yù)處理。由于每個潛在的使用案例都有截然不同的數(shù)據(jù),因此花費數(shù)小時將維基百科 PDF 整理好沒有多大意義。
例如,在搜索“兔子耳朵”時:
我們可以得到簡短的無序列表的文本片段,這些文本片段只有URL鏈接或者是只有幾個單詞長的字符串。
盡管關(guān)于兔子耳朵的句子被索引了,但是其中大多數(shù)只是關(guān)于兔子的,沒有提到耳朵。
與一些不太相關(guān)的匹配結(jié)果相比,最相關(guān)的匹配得分較低(在余弦中,分數(shù)越低意味著相關(guān)性越高)。
盡管鍵入了所述圖像的描述且被索引,但是都無法返回圖像。

結(jié)果失敗原因
01
編碼器或模型本身不夠好(反駁:CLIP 雖然不適合文本,但是至少是可用的。)
02
也許數(shù)據(jù)集本身太小了(反駁:雖然它只是幾個PDF,但被分解成幾千塊,其中許多是完整的句子或圖像。)
03
索引(*尾注,文本片段,對書頁的引用)不是“真實內(nèi)容”,編碼器無法解讀其中的大部分內(nèi)容。(解釋:可能是主要問題)
如何調(diào)整PDF搜索以適應(yīng)他人建立的PDF?
到目前為止,在PDF搜索中大多數(shù)人都希望只關(guān)注文本,這并非壞事。
以前我們試圖搜索文本和圖像,需要一個編碼器可以將兩者都嵌入到一個公共向量空間中。即 CLIPEncoder(如下所示):
https://hub.jina.ai/executor/29r2b26t
CLIP 非常擅長圖像搜索,但是文本搜索體驗較為一般!
我們可以用什么來代替CLIP?
如果我們只處理文本,我們可以使用其他編碼器,例如:
01
SpacyTextEncoder:支持多種語言,速度快,適合通用文本。
參考鏈接:
https://hub.jina.ai/executor/u7h7cuh2
02
TransformerTorchEncoder:支持多種語言和特殊例子(例如醫(yī)學(xué)文本搜索)。
參考鏈接:
https://hub.jina.ai/executor/u9pqs8eb
我們將建造什么樣的搜索引擎?
移動部件更少就能夠更清楚地看到工作細節(jié),我們可以采用這種策略構(gòu)建搜索引擎。
因此,我們我們將為簡單文本PDF構(gòu)建一個搜索引擎,文本不需要太多預(yù)處理:
1、刪除頁碼。
2、刪除尾注、腳注。
3、處理大量引用和意外標點符號(如 )。Fly-fishing for Dummies, 1988 Penguin Press, A.Albrechtson et al, pp.3–8. http://penguin.com/flyfishing
4、在分頁符之間合并文本塊。
簡而言之,剝離所有可能使編碼器無法運作的事物。啟動運行后,我們就可以開始考慮:
1、更復(fù)雜的 PDF(逐漸增加)。
2、多語言搜索(已經(jīng)存在用于此的模型)。
3、搜索文本和圖像。
歡迎提出對 PDF 搜索的想法!如果您有任何想法,通過https://slack.jina.ai/加入我們的Slack,并在#projects-pdf 頻道和我們進一步探討。