Sekcje bazy wiedzy ▾

Nawigacja

▸ Zacznij tutaj Według ról

Kategorie

Narzędzia 37
Słownik 12

Narzędzia

LlamaIndex + Gonka AI — aplikacje RAG za grosze

LlamaIndex — to wiodący framework do budowania aplikacji typu RAG oraz agentów AI w Pythonie (dostępna jest również wersja LlamaIndex.TS dla TypeScript). Zajmuje się ładowaniem dokumentów, dzieleniem ich na fragmenty (chunking), indeksowaniem, wyszukiwaniem wektorowym i generowaniem odpowiedzi — opisujesz dane, a LlamaIndex przekształca je w system pytań i odpowiedzi (Q&A) działający w oparciu o dowolny model LLM.

Istnieje jednak problem — koszt inferencji. RAG z natury jest zasobożerny: na każde pytanie do modelu wysyłane jest zapytanie wraz z kilkoma znalezionymi fragmentami kontekstu, a w przypadku indeksowania dużych kolekcji dochodzą jeszcze embeddingi. W warunkach produkcyjnych są to tysiące zapytań dziennie. Przy cenach OpenAI ($2.50–15 za 1M tokenów) lub Anthropic ($3–15 za 1M), nawet skromny serwis typu Q&A generuje koszty rzędu dziesiątek tysięcy dolarów miesięcznie.

LlamaIndex natywnie współpracuje z dowolnym endpointem kompatybilnym z OpenAI za pośrednictwem klasy OpenAILike. Oznacza to, że JoinGonka Gateway podłącza się w zaledwie kilku linijkach kodu — bez niestandardowych dostawców i patchów. Wynik: ten sam system RAG działa za $0.0069/1M tokenów wejściowych (wyjściowe ×3) poprzez zdecentralizowaną sieć Gonka — setki i tysiące razy taniej niż w chmurowych API.

Szybki start: połączenie przez OpenAILike

Klucz API JoinGonka: zarejestruj się na gate.joingonka.ai/register — na start dajemy 3M darmowych tokenów — i utwórz klucz jg-xxx w Dashboard.

Instalacja:

pip install llama-index llama-index-llms-openai-like

Dla dowolnego API kompatybilnego z OpenAI, LlamaIndex udostępnia klasę OpenAILike z pakietu llama_index.llms.openai_like. Minimalny przykład zapytania do Gonka:

from llama_index.llms.openai_like import OpenAILike

llm = OpenAILike(
    api_base="https://gate.joingonka.ai/v1",
    api_key="jg-twój-klucz",
    model="MiniMaxAI/MiniMax-M2.7",
    is_chat_model=True,            # Gonka to chat-endpoint
    is_function_calling_model=True, # natywny tool calling jest wspierany
    context_window=200000,         # 200K w modelach sieci
    max_tokens=8192,               # limit wyjścia przez Gateway
)

response = llm.complete("Wyjaśnij, czym jest RAG w trzech zdaniach.")
print(response)

Ważne odnośnie OpenAILike: koniecznie podaj is_chat_model=True — w przeciwnym razie LlamaIndex skieruje zapytanie do completion-endpoint, którego nie posiadamy. is_function_calling_model=True aktywuje natywne tool calls. context_window ustawiaj zgodnie z modelem, aby LlamaIndex poprawnie dzielił kontekst.

Przykład: potok RAG z silnikiem zapytań

Klasyczny scenariusz LlamaIndex — indeks oparty na Twoich dokumentach i zapytania do niego przez query_engine. Globalny LLM ustawia się raz przez Settings.llm, następnie cały pipeline używa Gonka automatycznie.

from llama_index.core import (
    VectorStoreIndex,
    SimpleDirectoryReader,
    Settings,
)
from llama_index.llms.openai_like import OpenAILike
from llama_index.embeddings.huggingface import HuggingFaceEmbedding

# 1. LLM przez Gonka (raz — globalnie)
Settings.llm = OpenAILike(
    api_base="https://gate.joingonka.ai/v1",
    api_key="jg-twój-klucz",
    model="MiniMaxAI/MiniMax-M2.7",
    is_chat_model=True,
    context_window=200000,
    max_tokens=8192,
)

# 2. Lokalne embeddingi (za darmo, bez OpenAI)
Settings.embed_model = HuggingFaceEmbedding(
    model_name="BAAI/bge-small-en-v1.5"
)

# 3. Ładowanie i indeksacja dokumentów z folderu ./data
documents = SimpleDirectoryReader("data").load_data()
index = VectorStoreIndex.from_documents(documents)

# 4. Zapytanie do bazy wiedzy
query_engine = index.as_query_engine()
response = query_engine.query("O czym jest ten dokument?")
print(response)

Krytyczny niuans dotyczący embeddingów: domyślnie VectorStoreIndex używa embeddingów OpenAI (text-embedding-ada-002) — to osobne płatne wywołania do OpenAI, a nie do Gonka. Aby całkowicie odejść od OpenAI, ustaw lokalny model embeddingów przez Settings.embed_model (jak w przykładzie powyżej — HuggingFaceEmbedding, pakiet pip install llama-index-embeddings-huggingface). Wtedy generacja odbywa się przez Gonka, a wektoryzacja — lokalnie i za darmo.

Koszt: jedno zapytanie w RAG-pipeline (wyszukiwanie + generacja) zużywa ~2–5K tokenów LLM. Przez Gonka to ułamki centów; przez OpenAI/Anthropic — o 3–4 rzędy wielkości drożej. Przy strumieniu tysięcy zapytań dziennie różnica przekłada się na dziesiątki tysięcy dolarów oszczędności miesięcznie.

Porównanie kosztów obciążenia RAG

Aplikacja RAG to nie jednorazowy czat, lecz ciągły strumień zapytań: każde pytanie użytkownika pociąga za sobą 2–5K tokenów LLM (samo pytanie plus znalezione fragmenty kontekstu). Obliczmy typowe wolumeny i koszty u różnych dostawców. Ceny Gonka przez JoinGonka Gateway: wejście ~$0.0069/1M, wyjście ×3.

ScenariuszTokenów LLMOpenAI / AnthropicJoinGonka Gonka
Jedno pytanie do bazy wiedzy~4K$0.01 — $0.06~$0.00004
Chatbot wsparcia (1K zapytań/dzień)~4M/dzień$10 — $60 dziennie~$0.038 dziennie
Indeksowanie + Q&A po korpusie (1M słów)~5M$12 — $75~$0.048
Usługa produkcyjna, 50K zapytań/mies.~200M/mies.$500 — $3,000 miesięcznie~$1.92 miesięcznie

Na darmowych 3M tokenów możesz uruchomić pierwsze zapytania potoku RAG, zaindeksować testowy korpus i wysłać tysiące zapytań — nie wydając ani grosza. W skali produkcyjnej JoinGonka Gateway zmienia RAG z drogiej usługi w wydatek, którego można w ogóle nie zauważyć.

Agenci, wywoływanie narzędzi i wybór modelu

LlamaIndex potrafi nie tylko odpowiadać na podstawie dokumentów, ale także budować agentów z narzędziami. Wszystkie trzy modele Gonka obsługują natywny tool calling — agenci wywołują funkcje w sposób ustrukturyzowany, bez parsowania tekstu. Przykład agenta z narzędziem:

import asyncio
from llama_index.core.agent.workflow import FunctionAgent
from llama_index.llms.openai_like import OpenAILike

llm = OpenAILike(
    api_base="https://gate.joingonka.ai/v1",
    api_key="jg-twój-klucz",
    model="MiniMaxAI/MiniMax-M2.7",
    is_chat_model=True,
    is_function_calling_model=True,
    context_window=200000,
    max_tokens=8192,
)

def multiply(a: float, b: float) -> float:
    """Mnoży dwie liczby."""
    return a * b

agent = FunctionAgent(
    tools=[multiply],
    llm=llm,
    system_prompt="Jesteś pomocnym asystentem. Do obliczeń używaj narzędzi.",
)

async def main():
    result = await agent.run("Ile to jest 1234 razy 5678?")
    print(result)

asyncio.run(main())

Wybór modelu (pole model i odpowiednie limity context_window / max_tokens):

Model (model)KontekstMax wyjścieKiedy wybierać
MiniMaxAI/MiniMax-M2.7200K8192Domyślny (jak w przykładzie): tool calling, agenci, RAG
deepseek-ai/DeepSeek-V4-Flash-0731380K32768Drugi co do długości kontekst sieci, najdłuższe wyjście, tanie duże prompty
zai-org/GLM-5.3-Flash390K8192Model reasoning: złożona logika, najdłuższy kontekst sieci; rozumowanie zużywa część max_tokens

Limit max_tokens przez Gateway — do 8192 dla MiniMax M2.7 i GLM-5.3 Flash, do 32768 dla DeepSeek V4 Flash. Jeśli max_tokens nie jest określony dla żądania nie-streamingowego, domyślnie powróci do 1500 tokenów — dla odpowiedzi RAG i kroków agenta należy ustawić tę wartość jawnie.

TypeScript: dla LlamaIndex.TS istnieje lustrzana ścieżka — klasa OpenAI z pakietu @llamaindex/openai przyjmuje baseURL i apiKey (lub odczytuje zmienne OPENAI_BASE_URL / OPENAI_API_KEY), więc ten sam Gateway łączy się również w stosie Node.js. Jeśli budujesz aplikacje AI także na frameworkach Pythonowych, sprawdź również poradnik dotyczący LangChain.

LlamaIndex + Gonka = production-ready RAG i agenci za ułamek centa. Połączenie przez OpenAILike (is_chat_model=True), natywny tool calling, lokalne embeddingi — wejście $0.0069/1M zamiast $2.50–15 w OpenAI. Tokeny startowe pozwalają przetestować potok bez karty płatniczej.

Chcesz wiedzieć więcej?

Zapoznaj się z innymi sekcjami lub zacznij zarabiać GNK już teraz.

Odbierz darmowe tokeny →