Pesquisar documentos do Armazenamento Vetorial por similaridade semântica
Pesquisar documentos do Armazenamento Vetorial com semelhança semântica e operações em lote
Initiate a search operation with a query text and receive most semantically similar responses from the vector store.
The ID of the vector store.
The search query text.
Number of chunks to return.
Matching threshold.
Number of chunks before the matched chunk to include.
Number of chunks after the matched chunk to include.
The API key for authentication.
GET /api/v1/vector-stores/{vector-store-id}/documents/search HTTP/1.1
Host: api.rememberizer.ai
x-api-key: text
Accept: */*
Search results retrieved successfully.
{
"vector_store": {
"id": "text",
"name": "text"
},
"matched_chunks": [
{
"document": {
"id": 1,
"name": "text",
"type": "text",
"size": 1,
"indexed_on": "2025-07-01T20:33:06.196Z",
"vector_store": "text",
"created": "2025-07-01T20:33:06.196Z",
"modified": "2025-07-01T20:33:06.196Z"
},
"matched_content": "text",
"distance": 1
}
]
}
Exemplos de Solicitações
curl -X GET \
"https://api.rememberizer.ai/api/v1/vector-stores/vs_abc123/documents/search?q=Como%20integrar%20nosso%20produto%20com%20sistemas%20de%20terceiros&n=5&prev_chunks=1&next_chunks=1" \
-H "x-api-key: SUA_CHAVE_API"
Parâmetros de Caminho
vector-store-id
string
Obrigatório. O ID do armazenamento de vetores a ser pesquisado.
Parâmetros de Consulta
q
string
Obrigatório. O texto da consulta de pesquisa.
n
integer
Número de resultados a retornar. Padrão: 10.
t
number
Limite de correspondência. Padrão: 0.7.
prev_chunks
integer
Número de partes antes da parte correspondente a incluir. Padrão: 0.
next_chunks
integer
Número de partes após a parte correspondente a incluir. Padrão: 0.
Formato de Resposta
{
"vector_store": {
"id": "vs_abc123",
"name": "Documentação do Produto"
},
"matched_chunks": [
{
"document": {
"id": 1234,
"name": "Guia de Integração.pdf",
"type": "application/pdf",
"size": 250000,
"indexed_on": "2023-06-15T10:30:00Z",
"vector_store": "vs_abc123",
"created": "2023-06-15T10:15:00Z",
"modified": "2023-06-15T10:30:00Z"
},
"matched_content": "Nosso produto oferece várias opções de integração para sistemas de terceiros. O método principal é através da nossa API RESTful, que suporta autenticação OAuth2. Além disso, você pode usar nosso SDK disponível em Python, JavaScript e Java.",
"distance": 0.123
},
// ... mais partes correspondentes
]
}
Autenticação
Este endpoint requer autenticação usando uma chave de API no cabeçalho x-api-key
.
Respostas de Erro
400
Solicitação Inválida - Parâmetros obrigatórios ausentes ou formato inválido
401
Não Autorizado - Chave de API inválida ou ausente
404
Não Encontrado - Armazenamento de Vetores não encontrado
500
Erro Interno do Servidor
Dicas de Otimização de Busca
Janelas de Contexto
Use os parâmetros prev_chunks
e next_chunks
para controlar quanto contexto é incluído em cada correspondência:
Defina ambos como 0 para correspondências precisas sem contexto
Defina ambos como 1-2 para correspondências com contexto mínimo
Defina ambos como 3-5 para correspondências com contexto substancial
Limite de Correspondência
O parâmetro t
controla quão rigorosamente as correspondências são filtradas:
Valores mais altos (por exemplo, 0.9) retornam apenas correspondências muito próximas
Valores mais baixos (por exemplo, 0.5) retornam mais correspondências com maior variedade
O padrão (0.7) fornece uma abordagem equilibrada
Operações em Lote
Para aplicações de alto desempenho, o Rememberizer suporta operações em lote eficientes em lojas de vetores. Esses métodos otimizam o desempenho ao processar várias consultas de pesquisa.
Implementação de Busca em Lote
import requests
import time
import concurrent.futures
def batch_search_vector_store(vector_store_id, queries, num_results=5, batch_size=10):
"""
Realiza buscas em lote contra um armazenamento de vetores
Args:
vector_store_id: ID do armazenamento de vetores a ser pesquisado
queries: Lista de strings de consulta de pesquisa
num_results: Número de resultados por consulta
batch_size: Número de requisições paralelas
Returns:
Lista de resultados da pesquisa
"""
headers = {
"x-api-key": "YOUR_API_KEY"
}
results = []
# Processar em lotes para evitar sobrecarregar a API
for i in range(0, len(queries), batch_size):
batch_queries = queries[i:i+batch_size]
with concurrent.futures.ThreadPoolExecutor(max_workers=batch_size) as executor:
futures = []
for query in batch_queries:
params = {
"q": query,
"n": num_results,
"prev_chunks": 1,
"next_chunks": 1
}
# Enviar a requisição para o pool de threads
future = executor.submit(
requests.get,
f"https://api.rememberizer.ai/api/v1/vector-stores/{vector_store_id}/documents/search",
headers=headers,
params=params
)
futures.append(future)
# Coletar resultados de todas as futures
for future in futures:
response = future.result()
if response.status_code == 200:
results.append(response.json())
else:
results.append({"error": f"Falhou com código de status: {response.status_code}"})
# Adicionar um atraso entre os lotes para evitar limitação de taxa
if i + batch_size < len(queries):
time.sleep(1)
return results
# Exemplo de uso
queries = [
"Integração com APIs REST",
"Protocolos de autenticação",
"Como implantar em produção",
"Técnicas de otimização de desempenho",
"Melhores práticas de tratamento de erros"
]
search_results = batch_search_vector_store("vs_abc123", queries, num_results=3, batch_size=5)
Otimização de Desempenho para Operações em Lote
Ao implementar operações em lote para buscas em lojas de vetores, considere estas melhores práticas:
Tamanho Ótimo do Lote: Para a maioria das aplicações, processar de 5 a 10 consultas em paralelo oferece um bom equilíbrio entre throughput e uso de recursos.
Consciência de Limitação de Taxa: Inclua mecanismos de atraso entre os lotes (tipicamente 1-2 segundos) para evitar atingir os limites de taxa da API.
Tratamento de Erros: Implemente um tratamento de erros robusto para consultas individuais que podem falhar dentro de um lote.
Gerenciamento de Conexões: Para aplicações de alto volume, implemente pooling de conexões para reduzir a sobrecarga.
Configuração de Timeout: Defina timeouts apropriados para cada solicitação para evitar que consultas de longa duração bloqueiem todo o lote.
Processamento de Resultados: Considere processar resultados de forma assíncrona à medida que se tornam disponíveis, em vez de esperar por todos os resultados.
Monitoramento: Acompanhe métricas de desempenho, como tempo médio de resposta e taxas de sucesso, para identificar oportunidades de otimização.
Para aplicações de produção com volumes de consulta muito altos, considere implementar um sistema de fila com processos de trabalho para gerenciar grandes lotes de forma eficiente.
Este endpoint permite que você pesquise sua loja de vetores usando similaridade semântica. Ele retorna documentos que estão conceitualmente relacionados à sua consulta, mesmo que não contenham as palavras-chave exatas. Isso o torna particularmente poderoso para consultas em linguagem natural e respostas a perguntas.
Last updated