Airweave este o aplicație complexă care împreună cu puterea agenților AI instalați local prin Ollama permite căutarea informațiilor din diferite surse de informații (baze de date, documente, aplicații etc).
În era digitală, datele sunt împrăștiate prin diverse aplicații și baze de date. Agenții AI se confruntă cu o problemă majoră: accesarea eficientă a informațiilor relevante. Acest articol explorează în detaliu ce este Airweave și cum poate fi integrat Ollama pentru a obține toate beneficiile agenților AI locali.
1. Introducere: problema datelor izolate
În acest context datele „izolate” se referă la informațiile care sunt izolate în sisteme sau departamente diferite, făcând dificilă accesarea și utilizarea lor eficientă. Această problemă limitează capacitatea agenților AI de a recupera informațiile necesare pentru a lua decizii inteligente. Airweave este un instrument conceput tocmai pentru a depăși această provocare.
Airweave permite agenților să caute în orice aplicație, conectând diverse surse de date și transformându-le într-o bază de cunoștințe unificată și căutabilă semantic. Aceasta înseamnă că Airweave nu doar colectează datele, ci și le înțelege contextul, permițând interogări mai precise și relevante. Funcționalitatea principală a Airweave include:
- Autentificare prin conectarea securizată la sursele de date;
- Extracție și transformare prin extragerea datelor relevante și formatarea lor într-un mod utilizabil;
- Generarea de embedding-uri prin crearea de reprezentări numerice (vectorizare) ale datelor pentru a permite căutarea semantică;
- Servirea rezultatelor căutării prin furnizarea rezultatelor căutării prin API REST sau MCP (Model Context Protocol).
2. Caracteristici și arhitectură Airweave
Airweave se distinge prin multiple caracteristici cheie:
- Sincronizare extensivă: se sincronizează cu peste 25 de surse de date cu o configurare minimă;
- Extracție inteligentă: include un proces de extracție și transformare a entităților;
- Securitate robustă: arhitectură multi-tenant cu suport OAuth2;
- Actualizări eficiente: actualizări incrementale folosind content hashing;
- Căutare avansată: căutare semantică pentru interogările agenților;
- Controlul versiunilor: versionarea modificărilor datelor;
- Flexibilitate: suport white-labeling pentru dezvoltatorii de soluții SaaS.
Din punct de vedere al tehnologiilor, Airweave utilizează:
- Frontend: React/TypeScript
- Backend: FastAPI (Python)
- Metadate: PostgreSQL
- Bază de date vectorială (pentru căutare semantică): Qdrant
- Implementare: Docker Compose (dezvoltare) și Kubernetes (producție)
3. Integrarea Airweave cu Ollama
Ollama este o platformă care permite rularea locală a modelelor lingvistice mari (LLM) și a modelelor de embedding. Combinarea Airweave cu Ollama permite utilizarea modelelor locale pentru generarea de embedding-uri și procesarea interogărilor.
Precondiții pentru instalare
1. Docker instalat.
2. Ollama instalat și minimum două modele descărcate: un model LLM (ex. Qwen 3) și un model de embedding (ex. Nomic Embed).
Pașii de instalare:
1. Clonarea Airweave de pe GitHub
# 1. Clone the repository
git clone https://github.com/airweave-ai/airweave.git
cd airweave
2. Setarea unei variabile de mediu pentru cheia API
export AIRWAVE_API_KEY=[valoare_aleatoare]
3. Asigurarea permisiunilor necesare pentru fișierul socket Docker (dacă este necesar).
4. Executarea scriptului de pornire
chmod +x start.sh
./start.sh
Airweave va descărca toate elementele componentă și aici vorbim de mai mulți GB de date, deci trebuie să vă înarmați cu un pic de răbdare.
După instalare, dashboard-ul Airweave este accesibil la `http://localhost:8080`, iar documentația API la `http://localhost:8001/docs`.
4. Aplicații practice și limitări
Un exemplu practic de utilizare a Airweave cu Ollama este crearea unei colecții din datele de plată Stripe. Astfel, agenții AI pot răspunde la interogări complexe, cum ar fi „care sunt clienții noștri de top după venituri?”. Airweave recuperează și oferă răspunsuri bazate pe datele sincronizate din Stripe.
Airweave poate funcționa prin REST API sau ca un server MCP. Astfel, e foarte ușor să construim scripturi python care foloesc API-ul, dar e și mai comodi să îl integrăm în orice aplicație care folosește protocolul MCP pentru a discuta pur și simplu cu datele furnizate de Airweave.
Un exemplu de cod python care folosește REST API este următorul:
#!/usr/bin/env python3
import time
from airweave import AirweaveSDK
from airweave. schemas import ResponseType
def main():
print(" Starting Airweave End-to-End Example")
print("=" * 50)
# Initialize the SDK with local endpoint
print(" Connecting to local Airweave instance. .. ")
client = AirweaveSDK(
base_url="http://localhost:8080"
api_key="test"
)
try:
# Step 1: Create Your First Collection
print("\n Step 1: Creating a new collection ... ")
collection = client. collections. create_collection(
name="My First Collection"
)
print(f"Created collection: {collection. readable_id}")
collection_id = collection. readable id
# Step 2: Connect Your First Data Source
print("\n Step 2: Connecting Stripe data source ... ")
source_connection = client.source_connections.create_source_connection(
name="My Stripe Connection",
short_name="stripe",
collection=collection_id,
auth_fields:{
"api_key": "<stripe key>"
},
config_fields={
"sync_customers": True,
"sync_products": True,
"sync_subscriptions": True
}
sync_immediately=True
)
print(f"Created connection: {source_connection.id}")
print(f"Status: {source_connection. status}")
# Wait for sync to complete
print("\n Waiting for data synchronization...)
max_wait_time = 60 # seconds
wait time = 0
while wait_time < max_wait_time:
# Check sync status
connection_status = client.source_connections.get_source_connection(
source_connection.id
)
if connection_status.status == "completed":
print(f"Data synchronization completed!")
break
elif connection_status. status == "failed":
print(f"Data sync failed!")
return
else:
print(f"% Sync in progress ... ({connection_status.status})")
time.sleep(5)
wait_time += 5
if wait_time >= max_wait_time:
print (" Sync taking longer than expected, continuing with search ... ")
# Step 3: Search Your Data
print("\n Step 3: Searching the data ... ")
# Example search queries
search_queries = [
"What are our top customers by revenue?",
"Show me subscription cancellation trends",
"Which products have the highest churn rate?"
for query in search_queries:
print (f"\nmm Searching: '{query}'")
print("-" * 40)
try:
# AI completion based on search results
results = client.collections. search_cqllection(
readable_id=collection_id,
query=query,
response_type=ResponseType. COMPLETION
)
print (" AI Response: ")
print (results.completion)
if results.results:
print(f"\n Based on {len(results.results) } sources :")
for i, result in enumerate(results. results[ : 3], 1):
print(f" {i}. {result.metadata.get('title', 'Untitled' )}")
if hasattr(result, 'score') :
print(f"No sources found for this query")
else:
print(f" No sources found")
except Exception as search error:
print(f"X Search error: {search_errof}")
# Fallback to raw search
try:
print(" Trying raw search instead ... ")
raw_results = client.collections. search_collection(
readable_id=collection_id,
query=query,
response_type=ResponseType.RAW
)
if raw_results.results:
print(f" Found {len(raw_resykts,results)} row results")
for i, result in enumerate(raw_results.results[:2],1):
print(f" {i} . {result.metadata.get('title','untitled')}")
if hasattr(result, 'content'):
preview = result.content[:100]
print(f" Preview: {preview})
else:
print(f" No results")
except Exception as raw_error:
print(f" Error")
print("\n End")
Cu toate acestea, integrarea Airweave cu Ollama are și limitări. Funcționalitatea este limitată, necesitând adesea cod personalizat pentru a controla comportamentul modelelor locale bazate pe context. De asemenea, fiind un proiect în curs de dezvoltare, pot exista anumite „margini brute” care sunt în proces de finisare.
5. Concluzie
Airweave oferă o soluție promițătoare pentru a conecta agenții AI la datele din organizație, într-un mod absolut securizat, cu toate procesările făcute local, transformând datele silozate în baze de cunoștințe căutabile semantic.
Integrarea cu Ollama permite utilizarea modelelor open-source local, dar este important să se țină cont de limitările funcționalității. Pe măsură ce proiectul evoluează, ne putem aștepta la îmbunătățiri și integrări suplimentare, consolidând poziția Airweave ca un instrument crucial pentru agenții AI moderni.