>_ DevTrendsnl

Taal

Home

Talen

Secties

Frontend Backend Mobiel DevOps AI / ML GameDev Blockchain Embedded Beveiliging
Python

Alles voor Vector Search en LLM in Één Python-bibliotheek

Wanneer je een service met vector search of een RAG-pijplijn moet bouwen, verandert de standaard stack al snel in een bouwpakket. Je pakt een vector database zoals Qdrant, koppelt LlamaIndex of LangChain, zoekt een oplossing voor lokale SQLite met metadata, en vraagt je af hoe je het allemaal aan elkaar knoopt. Uiteindelijk hoop je een dozijn externe services en afhankelijkheden op die ergens gehost moeten worden en constant bijgewerkt moeten worden.

Het txtai-project lost dit probleem precies op. De bibliotheek wordt sinds 2020 ontwikkeld en brengt op één plek samen: een vector database, hybride zoeken met SQL-ondersteuning, grafiekanalyse en orkestratie van taalmodellen.

txtai architecture

Waarom nog een AI-framework

Het hoofdidee achter txtai is om een "alles-in-één" tool te bieden zonder een verbinding met cloud-API's. Als je zoeken door interne documentatie moet organiseren of een autonoom agent moet bouwen, hoef je niet per se alle data naar services van derden te sturen.

Het kerncomponent van de bibliotheek is een embeddings database. Deze combineert een vector index, relationele tabellen en graafnetwerken. Dit maakt hybride queries mogelijk die semantische gelijkenis combineren met standaard veldgebaseerde filtering.

Hier is een voorbeeld van het opstarten van een vector index in slechts drie regels Python-code:

import txtai

embeddings = txtai.Embeddings()
embeddings.index(["Correct", "Not what we hoped"])
embeddings.search("positive", 1)
# [(0, 0.29862046241760254)]

Als Python niet je primaire taal in de stack is, heeft txtai kant-en-klare bindings voor JavaScript, Java, Rust en Go. Dit werkt via een ingebouwde webserver op FastAPI of het Model Context Protocol (MCP).

Belangrijkste mogelijkheden van het framework

Klassieke zoekmachines zoeken naar exacte trefwoordovereenkomsten. Vector databases vinden vergelijkbare zinsneden op betekenis. txtai combineert beide benaderingen en voegt de mogelijkheid toe om queries te schrijven met SQL-syntaxis.

Je kunt niet alleen semantisch vergelijkbare teksten zoeken, maar ook voorwaarden toepassen op datum, categorie of tekst-tags, allemaal binnen één enkele query. Je kunt niet alleen tekst indexeren, maar ook afbeeldingen, audio-opnames en video.

LLM- en RAG-orkestratie

Voor het genereren van antwoorden met contextverankering (Retrieval Augmented Generation) combineert txtai vector search met taalmodellen. De database retourneert relevante tekstfragmenten en het model vormt het uiteindelijke antwoord, wat de kans op hallucinaties vermindert.

RAG in txtai

Als generatieve engine kun je lokale modellen gebruiken via llama.cpp of externe providers zoals OpenAI, Claude en AWS Bedrock via LiteLLM.

Autonome agents

De agentmodule in txtai is gebouwd op het smolagents-framework van Hugging Face. Agents kunnen zelfstandig complexe taken opsplitsen in subtaken, databases bevragen en externe tools gebruiken.

Agentgedragconfiguratie wordt ondersteund via standaard configuratiebestanden agents.md en specificatie skill.md. Dit is handig wanneer je snel logica moet beschrijven zonder zwaar boilerplate-code te schrijven.

Micromodel-pijplijnen

Grote taalmodellen zijn veelzijdig maar veeleisend qua hardware-resources en werken langzaam. txtai benadrukt het bouwen van workflows van gespecialiseerde compacte modellen.

In plaats van een hypothetisch GPT-4 aan te roepen voor spraakherkenning, vertaling en tekstanalyse, stelt het framework voor om gespecialiseerde neurale netwerken te combineren:

  • Whisper voor het converteren van audio naar tekst
  • OPUS voor machinevertaling
  • DistilBART voor het genereren van samenvattingen
  • DeBERTa v3 voor classificatie en tagging
  • ESPnet JETS voor tekst-naar-spraak

Deze pijplijnbenadering bespaart rekenresources en vermindert latentie bij gegevensverwerking.

Hoe het intern werkt

Het project is geschreven in Python 3.10+ en gebruikt actief Hugging Face-infrastructuur (Transformers en Sentence Transformers). SQLite, DuckDB en netwerkbibliotheken worden onder de motorkap gebruikt voor metadata- en graafverbindingsopslag.

Qua deployment is txtai minimalistisch. Je kunt het basispakket installeren via pip of een kant-en-klare Docker-container uitvoeren:

pip install txtai

Indien nodig worden extra modules geïnstalleerd, bijvoorbeeld voor het werken met audio of graphics, wat de bibliotheek licht houdt in de basisconfiguratie.

# app.yml
embeddings:
    path: sentence-transformers/all-MiniLM-L6-v2

Om in microservices-modus te draaien, geef je simpelweg het configuratiebestand door aan uvicorn:

CONFIG=app.yml uvicorn "txtai.api:app"
curl -X GET "http://localhost:8000/search?query=positive"

Praktische gebruiksscenario's

De txtai-ontwikkelaars onderhouden een set van 70 interactieve notebooks met voorbeelden. Onder real-world scenario's vallen verschillende meest voorkomende op:

  • Een kennisbank maken met zoeken in documenten en argumentatiebestanden
  • Kennisgrafieken bouwen uit teksten met automatische entiteitsextractie
  • Mediafileprocessing: automatische podcast-transcriptie of afbeeldingszoekopdrachten
  • Persoonlijke assistenten maken die volledig offline werken op lokale hardware

De conclusie

txtai zal waarschijnlijk niet volledig gespecialiseerde gedistribueerde databases zoals Milvus vervangen in high-load projecten met miljarden vectoren. Echter, voor lokale services, interne bedrijfsutilities en snelle hybride RAG-systemen is het een uiterst handig framework. Je krijgt een werkende combinatie van zoeken, modellen en pijplijnen zonder complexe infrastructuur te hoeven opzetten.

Gerelateerde projecten