Siga estas etapas para configurar e executar o projeto:
Instale o PostgreSQL
admin
.Configurar o projeto
config
no diretório do projeto.db.js
e atualize a linha 3:mayanksharma
para o nome de usuário do seu sistema.Configurar o banco de dados
CREATE EXTENSION vector;
Instalar Ollama
ollama pull snowflake-arctic-embed
Instalar dependências do projeto
npm install
node server.js
Instale a extensão do cliente REST
Teste a API
api.http
para testar os endpoints da API. {
"query" : " your_search_query "
}
{
"title" : " magazine_title " ,
"author" : " author_name " ,
"category" : " magazine_category " ,
"content" : " magazine_content "
}
Usei PostgreSQL com pgvector (armazenamento de vetores de incorporação) e tsvector (armazenamento de texto de conteúdo).
Requisito: pesquise em 1 milhão de registros
Adicionados índices Hierarchical Navigable Small Worlds (HNSW) para pesquisa vetorial em embeddings de conteúdo Motivo: a pesquisa requer alta recuperação, o que torna o hnsw melhor que o ivfflat Referência
Adicionados índices para título, autor e conteúdo
Paginação adicionada para reduzir o tempo de carregamento
Perfil: Pico
Usuários virtuais: 20
Duração do teste: 5 minutos
Resultado do endpoint: POST /api/v1/magazine/hybridsearch/1 ("glasgow", "game", "business", "shubham", "food" e "modern")
Total de solicitações enviadas: 10.915
Solicitação por segundo: 35,62
Tempo médio de resposta: 116 ms
Dois serviços individuais para pesquisa de texto e pesquisa vetorial são usados
Os embeddings são gerados pelo modelo Meta llama "snowflake-arctic-embed", sendo leves.
PASSO 1: Os objetos comuns dos resultados da pesquisa vetorial e de texto completo são mostrados primeiro,
PASSO 2: seguido por objetos apenas da pesquisa de texto,
PASSO 3: resto dos objetos da pesquisa vetorial.
consulta: vetor "glasgow", retorna "Diário de festa celta" que tem "Escócia escrita no conteúdo"
consulta: vetor "shortbread", retorna "Celtic Feast Journal", pois "shortbread" está relacionado a "Escócia"
consulta: palavra-chave/texto completo "shubham", retorna "Physics Refresher" que tem o nome do autor "Shubham Thorve"
consulta: palavra-chave/texto completo "mayank", retorna "Digit Gaming" que tem o nome do autor "Mayank Khurana"
consulta: palavra-chave/texto completo "mês", retorna "Dalal Street Journal" que tem conteúdo "Tudo sobre videogames este mês"
/model