Site icon Ai-Romania – informații din domeniul inteligenței artificiale

Căutare AI locală cu Airweave si Ollama

Căutare AI locală cu Airweave si Ollama

Căutare AI locală cu Airweave si Ollama

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.

Airweave este o aplicație complexă care împreună cu puterea agenților AI instalați local prin Ollama

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:

2. Caracteristici și arhitectură Airweave

Airweave se distinge prin multiple caracteristici cheie:

Din punct de vedere al tehnologiilor, Airweave utilizează:

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.

Exit mobile version