Sekcje bazy wiedzy ▾

Nawigacja

▸ Zacznij tutaj Według ról

Kategorie

Narzędzia 54
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.0062/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 Dashboardzie.

Instalacja:

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

Dla dowolnego API zgodnego 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-your-key",
    model="MiniMaxAI/MiniMax-M2.7",
    is_chat_model=True,            # Gonka is a chat endpoint
    is_function_calling_model=True, # native tool calling is supported
    context_window=180000,         # MiniMax M2.7 context window
    max_tokens=8192,               # Gateway output cap
)

response = llm.complete("Explain what RAG is in three sentences.")
print(response)

Ważne w kwestii OpenAILike: koniecznie ustaw is_chat_model=True — inaczej LlamaIndex trafi do przestarzałego endpointu Completions z surowym promptem zamiast dialogu. is_function_calling_model=True włącza natywne tool calls. context_window ustawiaj według modelu, żeby LlamaIndex prawidłowo dzielił kontekst.

Przykład: potok RAG z silnikiem zapytań

Klasyczny scenariusz LlamaIndex — indeks po Twoich dokumentach i zapytania do niego przez query_engine. Globalny LLM ustawia się raz przez Settings.llm, a cały pipeline automatycznie korzysta z Gonka.

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 via Gonka (set once, globally)
Settings.llm = OpenAILike(
    api_base="https://gate.joingonka.ai/v1",
    api_key="jg-your-key",
    model="MiniMaxAI/MiniMax-M2.7",
    is_chat_model=True,
    context_window=180000,
    max_tokens=8192,
)

# 2. Local embeddings (free, no OpenAI)
Settings.embed_model = HuggingFaceEmbedding(
    model_name="BAAI/bge-small-en-v1.5"
)

# 3. Load and index documents from the ./data folder
documents = SimpleDirectoryReader("data").load_data()
index = VectorStoreIndex.from_documents(documents)

# 4. Query the knowledge base
query_engine = index.as_query_engine()
response = query_engine.query("What is this document about?")
print(response)

Krytyczny niuans dotyczący embeddingów: domyślnie VectorStoreIndex korzysta z 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 idzie przez Gonka, a wektoryzacja — lokalnie i za darmo.

Koszt: jedno zapytanie pipeline'u RAG (wyszukiwanie + generacja) zużywa ~2–5K tokenów LLM. Przez Gonka to ułamki centa; przez OpenAI/Anthropic — o 3–4 rzędy wielkości drożej. Przy strumieniu tysięcy zapytań dziennie różnica zamienia się w 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 stały strumień zapytań: każde pytanie użytkownika pociąga za sobą 2–5K tokenów LLM (samo pytanie plus znalezione fragmenty kontekstu). Policzmy typowe wolumeny i ile kosztują u różnych dostawców. Ceny Gonka przez JoinGonka Gateway: wejście ~$0.0062/1M, wyjście ×3.

ScenariuszTokeny 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
Indeksacja + Q&A po korpusie (1M słów)~5M$12 — $75~$0.048
Serwis produkcyjny, 50K zapytań/mies.~200M/mies.$500 — $3,000 miesięcznie~$1.92 miesięcznie

Na darmowych 3M tokenów można przepuścić pierwsze zapytania pipeline'u RAG, zaindeksować testowy korpus i przepuścić tysiące zapytań — i nie wydać ani centa. Przy wolumenach produkcyjnych JoinGonka Gateway zamienia RAG z drogiego serwisu w pozycję kosztową, której można w ogóle nie zauważać.

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

LlamaIndex potrafi nie tylko odpowiadać na podstawie dokumentów, ale też budować agentów z narzędziami. Wszystkie trzy modele Gonka obsługują natywne 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-your-key",
    model="MiniMaxAI/MiniMax-M2.7",
    is_chat_model=True,
    is_function_calling_model=True,
    context_window=180000,
    max_tokens=8192,
)

def multiply(a: float, b: float) -> float:
    """Multiplies two numbers."""
    return a * b

agent = FunctionAgent(
    tools=[multiply],
    llm=llm,
    system_prompt="You are a helpful assistant. Use the tools for calculations.",
)

async def main():
    result = await agent.run("What is 1234 multiplied by 5678?")
    print(result)

asyncio.run(main())

Wybór modelu (pole model i odpowiadające limity context_window / max_tokens):

Model (model)KontekstMaks. wyjścieKiedy wybrać
MiniMaxAI/MiniMax-M2.7180K8192Domyślny (jak w przykładzie): tool calling, agenci, RAG
deepseek-ai/DeepSeek-V4-Flash-0731380K32768Drugi najdłuższy kontekst w sieci, najdłuższe wyjście, tanie duże prompty
zai-org/GLM-5.3-Flash390K8192Model rozumowania: złożona logika, najdłuższy kontekst w 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 ustawiony dla zapytania niestrumieniowego, domyślnie zwrócone zostanie do 1500 tokenów — dla odpowiedzi RAG i kroków agenta ustawiaj wartość jawnie.

TypeScript: dla LlamaIndex.TS istnieje lustrzana ścieżka — klasa OpenAI z pakietu @llamaindex/openai przyjmuje baseURL i apiKey (albo czyta zmienne OPENAI_BASE_URL / OPENAI_API_KEY), więc ten sam Gateway podłączysz też w stacku Node.js. Jeśli budujesz aplikacje AI również na frameworkach Pythonowych, zobacz także przewodnik po 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.0062/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 →