Søg efter dokumenter efter semantisk lighed

Semantisk søgeendpoint med batchbehandlingsmuligheder

Eksempelanmodninger

curl -X GET \
  "https://api.rememberizer.ai/api/v1/documents/search/?q=Hvordan%20integrerer%20man%20Rememberizer%20med%20tilpassede%20applikationer&n=5&from=2023-01-01T00:00:00Z&to=2023-12-31T23:59:59Z" \
  -H "Authorization: Bearer YOUR_JWT_TOKEN"

Erstat YOUR_JWT_TOKEN med din faktiske JWT-token.

Forespørgselsparametre

Parameter
Type
Beskrivelse

q

string

Påkrævet. Den søgeforespørgselstekst (op til 400 ord).

n

integer

Antal resultater der skal returneres. Standard: 3. Brug højere værdier (f.eks. 10) for mere omfattende resultater.

from

string

Starten af tidsintervallet for dokumenter der skal søges, i ISO 8601 format.

to

string

Slutningen af tidsintervallet for dokumenter der skal søges, i ISO 8601 format.

prev_chunks

integer

Antal forudgående chunks der skal inkluderes for kontekst. Standard: 2.

next_chunks

integer

Antal følgende chunks der skal inkluderes for kontekst. Standard: 2.

Svarformat

{
  "data_sources": [
    {
      "name": "Google Drive",
      "documents": 3
    },
    {
      "name": "Slack",
      "documents": 2
    }
  ],
  "matched_chunks": [
    {
      "document": {
        "id": 12345,
        "document_id": "1aBcD2efGhIjK3lMnOpQrStUvWxYz",
        "name": "Rememberizer API Dokumentation.pdf",
        "type": "application/pdf",
        "path": "/Documents/Rememberizer/API Dokumentation.pdf",
        "url": "https://drive.google.com/file/d/1aBcD2efGhIjK3lMnOpQrStUvWxYz/view",
        "size": 250000,
        "created_time": "2023-05-10T14:30:00Z",
        "modified_time": "2023-06-15T09:45:00Z",
        "indexed_on": "2023-06-15T10:30:00Z",
        "integration": {
          "id": 101,
          "integration_type": "google_drive"
        }
      },
      "matched_content": "For at integrere Rememberizer med brugerdefinerede applikationer kan du bruge OAuth2-godkendelsesflowet til at autorisere din applikation til at få adgang til en brugers Rememberizer-data. Når du er autoriseret, kan din applikation bruge Rememberizer API'erne til at søge efter dokumenter, hente indhold og mere.",
      "distance": 0.123
    },
    // ... flere matchede dele
  ],
  "message": "Søgningen blev gennemført med succes",
  "code": "success"
}

Søgeoptimeringstips

Til Spørgsmål Svar

Når du søger efter et svar på et spørgsmål, så prøv at formulere din forespørgsel, som om det var et ideelt svar. For eksempel:

I stedet for: "Hvad er vektorindlejring?" Prøv: "Vektorindlejring er en teknik, der konverterer tekst til numeriske vektorer i et højdimensionelt rum."

For en dybere forståelse af, hvordan vektorindlejringer fungerer, og hvorfor denne søgemetode er effektiv, se Hvad er Vektorindlejringer og Vektor Databaser?

Justering af Resultatantal

  • Start med n=3 for hurtige, høj-relevante resultater

  • Øg til n=10 eller højere for mere omfattende information

  • Hvis søgningen returnerer utilstrækkelig information, prøv at øge n-parameteren

Tidsbaseret filtrering

Brug from og to parametrene til at fokusere på dokumenter fra specifikke tidsperioder:

  • Nylige dokumenter: Sæt from til en nylig dato

  • Historisk analyse: Angiv et specifikt datointerval

  • Udelukke forældet information: Sæt en passende to dato

Batchoperationer

For effektivt at håndtere store mængder af søgeforespørgsler understøtter Rememberizer batchoperationer for at optimere ydeevnen og reducere API-opkaldsoverskuddet.

Batch Søgning

import requests
import time
import json
from concurrent.futures import ThreadPoolExecutor

def batch_search_documents(queries, num_results=5, batch_size=10):
    """
    Udfør batch søgninger med flere forespørgsler
    
    Args:
        queries: Liste af søgeforespørgselsstrenge
        num_results: Antal resultater der skal returneres pr. forespørgsel
        batch_size: Antal forespørgsler der skal behandles parallelt
    
    Returns:
        Liste af søgeresultater for hver forespørgsel
    """
    headers = {
        "Authorization": "Bearer YOUR_JWT_TOKEN",
        "Content-Type": "application/json"
    }
    
    results = []
    
    # Behandl forespørgsler i batches
    for i in range(0, len(queries), batch_size):
        batch = queries[i:i+batch_size]
        
        # Opret en trådpool for at sende forespørgsler parallelt
        with ThreadPoolExecutor(max_workers=batch_size) as executor:
            futures = []
            
            for query in batch:
                params = {
                    "q": query,
                    "n": num_results
                }
                
                future = executor.submit(
                    requests.get,
                    "https://api.rememberizer.ai/api/v1/documents/search/",
                    headers=headers,
                    params=params
                )
                futures.append(future)
            
            # Indsaml resultater efterhånden som de fuldføres
            for future in futures:
                response = future.result()
                results.append(response.json())
        
        # Rate limiting - pause mellem batches for at undgå API throttling
        if i + batch_size < len(queries):
            time.sleep(1)
    
    return results

# Eksempel på brug
queries = [
    "Hvordan man bruger OAuth med Rememberizer",
    "Konfigurationsmuligheder for vektordatabaser",
    "Bedste praksis for semantisk søgning",
    # Tilføj flere forespørgsler efter behov
]

results = batch_search_documents(queries, num_results=3, batch_size=5)

Ydelsesovervejelser

Når du implementerer batchoperationer, skal du overveje disse bedste praksisser:

  1. Optimal Batchstørrelse: Start med batchstørrelser på 5-10 forespørgsler og juster baseret på din applikations ydelseskarakteristika.

  2. Hastighedsbegrænsning: Inkluder forsinkelser mellem batcher for at forhindre API-throttling. Et godt udgangspunkt er 1 sekund mellem batcher.

  3. Fejlhåndtering: Implementer robust fejlhåndtering for at håndtere mislykkede anmodninger inden for batcher.

  4. Ressourcestyring: Overvåg klient-side ressourceforbrug, især med store batchstørrelser, for at forhindre overdreven hukommelsesforbrug.

  5. Responsbehandling: Behandl batchresultater asynkront, når det er muligt, for at forbedre brugeroplevelsen.

For applikationer med høj volumen, overvej at implementere et køsystem for effektivt at håndtere et stort antal søgeanmodninger.

Denne endpoint giver kraftfulde semantiske søgefunktioner på tværs af din samlede vidensbase. Den bruger vektorindlejringer til at finde indhold baseret på betydning snarere end præcise nøgleordsmatch.

Last updated