原创 索引構建磁盤IO太高,巧用tmpfs讓內存來幫忙

在文本索引構建這種需要大量佔用磁盤IO的任務,如果正巧你的內存還有點餘糧,是否可以先索引存儲到內存,然後再順序寫入到磁盤呢?,需要大量佔用磁盤IO,如果正巧你的內存還有點餘糧,是否可以先索引存儲到內存,然後再順序寫入到磁盤呢? 將Linu

原创 從TF-IDF 到BM25, BM25+,一文徹底理解文本相關度

相關性描述的是⼀個⽂檔和查詢語句匹配的程度。我們從搜索引擎召回時,肯定希望召回相關性高的數據,那麼如何來量化相關度呢。 首先,我們定義,一個文檔doc,由多個詞語 term 組成。 最早,通過最簡單的TF-IDF來衡量。 TF-IDF 樸素

原创 跨語言調用神器SWIG介紹與使用入門

安裝 依賴 PCRE 庫 apt-get install libpcre2-dev 下載安裝 $ ./configure $ make $ make install 介紹 SWIG 是一個軟件開發工具,能夠簡化不同編程語言與 C 和 C

原创 xapian 搜索引擎介紹與使用入門

Xapian 是一個開源搜索引擎庫,使用 C++ 編寫,並提供綁定(bindings )以允許從多種編程語言使用。它是一個高度適應性的工具包,允許開發人員輕鬆地將高級索引和搜索功能添加到自己的應用程序中。Xapian 支持多種加權模型和豐富

原创 從Bitcask存儲模型談超輕量級KV系統設計與實現

Bitcask介紹 Bitcask是一種“基於日誌結構的哈希表”(A Log-Structured Hash Table for Fast Key/Value Data) Bitcask 最初作爲分佈式數據庫 Riak 的後端出現,Riak

原创 Rocksdb 離線生成sst文件並在線加載

rocksdb簡介 RocksDB是Facebook的一個實驗項目,目的是希望能開發一套能在服務器壓力下,真正發揮高速存儲硬件(特別是Flash存儲)性能的高效數據庫系統。這是一個C++庫,允許存儲任意長度二進制kv數據。支持原子讀寫操作。

原创 Hnswlib 介紹與入門使用

Hnswlib是一個強大的近鄰搜索(ANN)庫, 官方介紹 Header-only C++ HNSW implementation with python bindings, insertions and updates. 熱門的向量數據庫

原创 trafilatura 網頁解析原理分析

trafilatura 介紹 Trafilatura是一個Python包和命令行工具,用於收集網絡上的文本。其主要應用場景包括網絡爬蟲下載和網頁解析等。 今天我們不討論爬蟲和抓取,主要看他的數據解析是如何做的。 extract初體驗 fro

原创 使用代理中轉服務,解決selenium 使用短時效代理避免重啓

背景 selenium 配置代理需要在啓動的時候配置,如果代理失效或者不可用,切換需要重啓,浪費時間。 思路解決方案 可以使用搭建一個代理中轉服務,讓selenium連接固定的中轉服務,中轉服務選擇可用的代理。 代碼實現 代碼實現就簡單了,

原创 【開源】java版本BertTokenizer以及使用onnxruntime推理

python訓練的模型,轉換爲onnx模型後,用python代碼可以方便進行推理,但是java代碼如何實現呢? 首先ONNX 推理,可以使用onnxruntime <dependency> <groupId>com.microsof

原创 JAVA 和python 多網卡情況下獲取正確的IP地址

要獲取內網地址,可以嘗試連接到10.255.255.255:1。如果連接成功,獲取本地套接字的地址信息就是當前的內網IP。 python實現: import socket def extract_ip(): st = socket

原创 分佈式AI集羣服務器架構

ChatGPT的推出,人工智能正式進入大模型時代。要訓練一個chatgpt這樣的大模型,需要分佈式AI集羣的支持。 深度學習迎來大模型 Open AI的GPT-3模型,使用512張V100,需要訓練7個月。現在的大模型訓練,離不開分佈式

原创 AI集羣通信中的軟硬件介紹

計算機網絡通信中最重要兩個衡量指標主要是 帶寬 和 延遲。分佈式訓練中需要傳輸大量的網絡模型參數,網絡通信至關重要。 AI集羣通信實現方式 AI集羣是由多臺包含CPU、內存、GPU的服務器組成,需要考慮機器內通信和機器間通信。 機器內通信通

原创 [轉]Transformers使用

Transformers 是由 Hugging Face 開發的一個 NLP 包,支持加載目前絕大部分的預訓練模型。隨着 BERT、GPT 等大規模語言模型的興起,越來越多的公司和研究者採用 Transformers 庫來構建 NLP 應用

原创 基於golang開發一個wasm加解密模塊

爲保障數據安全,網頁上顯示的圖片,音頻等敏感信息,需要做加密,在網頁端調用wasm解密,然後渲染出來。 Golang原生支持編譯爲wasm,所以開發會比較便捷,選型時選擇golang。 整體思路: js請求文件buffer -> buff