hollowdb vector
v0.1.4

在HollowdB上實施層次可導航的小世界(HNSW)索引。
安裝軟件包:
yarn add hollowdb-vector
pnpm add hollowdb-vector
npm install hollowdb-vector您可以如下創建VectordB:
import HollowDBVector from "hollowdb-vector" ;
import { WarpFactory , defaultCacheOptions } from "warp-contracts" ;
import { SetSDK } from "hollowdb" ;
import { Redis } from "ioredis" ;
import { RedisCache } from "warp-contracts-redis" ;
// connect to Redis
const redis = new Redis ( ) ;
// create Warp instance with Redis cache
const warp = WarpFactory . forMainnet ( ) . useKVStorageFactory (
( contractTxId : string ) =>
new RedisCache ( { ... defaultCacheOptions , dbLocation : ` ${ contractTxId } ` } , { client : redis } ) ,
) ;
// create HollowDB SDK
const wallet = JSON . parse ( readFileSync ( "./path/to/wallet.json" , "utf-8" ) ) ;
const contractTxId = "your-contract-tx-id" ;
const hollowdb = new SetSDK < string > ( wallet , contractTxId , warp ) ;
// create HollowDB Vector
const vectordb = new HollowDBVector ( hollowdb ) ;這樣,您可以插入一個新觀點:
const point = [ - 0.28571999073028564 /* and many more... */ , 0.13964000344276428 ] ;
// any object
const metadata = {
name : "My favorite vector!" ,
} ;
// insert a point
await vectordb . insert ( point , metadata ) ;元數據是可選的,您可以在insert過程中遺漏。如果您想將其設置為以後的時間,您可以隨時這樣做:
vectordb . db . set_metadata ( index , metadata ) ; 筆記
插入一點點的複雜性可能會隨著數據庫的更多點而增加。
您可以通過其索引獲得一個向量,該索引返回其點值並元數據:
const { point , metadata } = await vectordb . get_vector ( index ) ;您可以進行查詢並返回頂級K相關結果:
// a query point
const query = [ - 0.28571999073028564 /* and many more... */ , 0.13964000344276428 ] ;
// number of top results to return
const K = 10 ;
// make a KNN search
const results = await vectordb . knn_search ( query , K ) ;
// each result contains the vector id, its distance to query, and metadata
const { id , distance , metadata } = results [ 0 ] ;HollowDB Vector導出一個靜態功能,使您可以部署自己擁有的新合同。假設您有上述wallet和一個warp實例,則可以使用以下方式創建新合同:
const { contractTxId } = await HollowDBVector . deploy ( wallet , warp ) ;
console . log ( "Deployed at:" , contractTxId ) ; 對於本倉庫的本地設置,首先克隆它。
git clone https://github.com/firstbatchxyz/hollowdb-vector然後,安裝軟件包:
pnpm install應自動安裝同伴依賴項。
我們在存儲庫中包括預先編譯的Protobuf,但是如果您以後要更改Protobuf,則可以按以下方式生成編譯的代碼:
# HNSW protobufs
pnpm proto:code:hnsw # generate js code
pnpm proto:type:hnsw # generate types
# Request protobufs
pnpm proto:code:req # generate js code
pnpm proto:type:req # generate types 在幾種情況下進行了測試
pnpm test 警告
您需要一台實時Redis服務器才能進行HollowDB測試。此外,HollowDB測試可能需要一些時間。
檢查格式:
pnpm format用棉布與:
pnpm lint您還可以檢查類型:
pnpm checkHollowDB Vector取代Danny,有關舊版代碼,請參考此分支。
HollowDB Vector在Apache 2.0下獲得許可。