벡터 스토리지는 브라우저의 indexedDB에 문서 벡터를 저장하는 가볍고 효율적인 벡터 데이터베이스입니다. 이 패키지를 사용하면 벡터 임베딩을 사용하여 텍스트 문서에서 시맨틱 유사성 검색을 수행 할 수 있습니다. 시맨틱 검색은 텍스트 문서 및 쿼리의 의미와 맥락을 이해하는 능력을 말해서보다 정확하고 관련 검색 결과를 가능하게합니다. 벡터 스토리지는 OpenAI 임베딩을 활용하여 텍스트 문서를 벡터로 변환하고 코사인 유사성을 기반으로 유사한 문서를 검색하기위한 인터페이스를 제공합니다.
코사인 유사성은 내부 제품 공간에서 2 개의 0이 아닌 벡터 사이의 유사성을 측정 한 것입니다. 그것은 두 벡터 사이의 각도의 코사인으로 정의됩니다. 코사인 유사성 값은 -1에서 1까지이며, 1은 완전한 유사성을 나타내고, 0은 유사성을 나타내지 않으며, -1은 완전한 비 유사성을 나타냅니다.
이 패키지에서 코사인 유사성은 문서 벡터와 쿼리 벡터 간의 유사성을 측정하는 데 사용됩니다. 코사인 유사성 점수는 벡터의 도트 생성물을 크기의 생성물로 나눈 값을 사용하여 계산됩니다.
가장 최근에 사용 된 (LRU) 메커니즘은 스토리지 크기를 관리하고 스토리지 크기가 지정된 한계를 초과 할 때 문서를 자동으로 제거하는 데 사용됩니다. 문서는 히트 카운터 (오름차순)와 타임 스탬프 (오름차순)로 정렬됩니다. 적중이 가장 낮고 가장 오래된 타임 스탬프가 가장 오래된 문서가 스토리지 크기가 한계 미만이 될 때까지 먼저 제거됩니다.
NPM을 사용하여 패키지를 설치하십시오.
npm i vector-storage다음은 VectorStorage 클래스 사용 방법의 기본 예입니다.
import { VectorStorage } from "vector-storage" ;
// Create an instance of VectorStorage
const vectorStore = new VectorStorage ( { openAIApiKey : "your-openai-api-key" } ) ;
// Add a text document to the store
await vectorStore . addText ( "The quick brown fox jumps over the lazy dog." , {
category : "example" ,
} ) ;
// Perform a similarity search
const results = await vectorStore . similaritySearch ( {
query : "A fast fox leaps over a sleepy hound." ,
} ) ;
// Display the search results
console . log ( results ) ; indexeddb에서 문서 벡터를 관리하기위한 메인 클래스.
새로운 vectorstorage 인스턴스를 만듭니다.
옵션 : 다음 속성을 포함하는 객체 :
interface IVSOptions {
openAIApiKey : string ; // The OpenAI API key used for generating embeddings.
maxSizeInMB ?: number ; // The maximum size of the storage in megabytes. Defaults to 2GB
debounceTime ?: number ; // The debounce time in milliseconds for saving to IndexedDB. Defaults to 0.
openaiModel ?: string ; // The OpenAI model used for generating embeddings. Defaults to 'text-embedding-ada-002'.
}스토어에 텍스트 문서를 추가하고 생성 된 문서를 반환합니다.
상점에 여러 텍스트 문서를 추가하고 생성 된 문서 배열을 반환합니다.
저장된 문서에서 유사성 검색을 수행하고 일치하는 문서 배열을 반환합니다.
매개 변수 : 다음 속성을 포함하는 객체 :
IVSDocument 인터페이스는 벡터 데이터베이스에 저장된 문서 개체를 나타냅니다. 다음 속성을 포함합니다.
interface IVSDocument {
hits ?: number ; // The number of hits (accesses) for the document. Omit if the value is 0.
metadata : object ; // The metadata associated with the document for filtering.
text : string ; // The text content of the document.
timestamp : number ; // The timestamp indicating when the document was added to the store.
vectorMag : number ; // The magnitude of the document vector.
vector : number [ ] ; // The vector representation of the document.
} 이 프로젝트에 대한 기부금을 환영합니다! 기여하고 싶다면 다음 단계를 따르십시오.
코드가 프로젝트의 코딩 스타일을 따르고 풀 요청을 제출하기 전에 모든 테스트가 통과 해야하는지 확인하십시오. 버그를 찾거나 개선에 대한 제안이 있으면 Github에서 문제를 자유롭게 열어주십시오.
이 프로젝트는 MIT 라이센스에 따라 라이센스가 부여됩니다. 전체 라이센스 텍스트는 라이센스 파일을 참조하십시오.
저작권 (C) Nitai Aharoni. 모든 권리 보유.