Các phần cơ sở kiến thức ▾

Công cụ

Công cụ

LlamaIndex + Gonka AI — Ứng dụng RAG giá rẻ

LlamaIndex là một framework hàng đầu để xây dựng các ứng dụng RAG và các tác nhân AI trong Python (cũng có phiên bản TypeScript của LlamaIndex.TS). Nó đảm nhiệm việc tải tài liệu, chia thành các đoạn, lập chỉ mục, tìm kiếm vector và tổng hợp phản hồi — bạn chỉ cần mô tả dữ liệu và LlamaIndex sẽ biến chúng thành một hệ thống hỏi đáp dựa trên bất kỳ LLM nào.

Vấn đề duy nhất là chi phí suy luận. Bản thân RAG rất tốn kém: mỗi câu hỏi được gửi đến mô hình cùng với một vài đoạn ngữ cảnh được tìm thấy, và đối với việc lập chỉ mục các tập hợp lớn, các embedding sẽ được thêm vào. Với khối lượng sản xuất, đây là hàng nghìn yêu cầu mỗi ngày. Với OpenAI (2.50 đô la–15 đô la cho 1 triệu token) hoặc Anthropic (3 đô la–15 đô la cho 1 triệu token), ngay cả một dịch vụ hỏi đáp khiêm tốn cũng trở thành hàng chục nghìn đô la mỗi tháng.

LlamaIndex hoạt động tự nhiên với bất kỳ điểm cuối tương thích OpenAI nào thông qua lớp OpenAILike. Điều này có nghĩa là JoinGonka Gateway được kết nối chỉ bằng vài dòng mã — không cần nhà cung cấp tùy chỉnh hoặc các bản vá. Kết quả: cùng một hệ thống RAG hoạt động với giá 0.0005 đô la/1 triệu token đầu vào (đầu ra ×3) thông qua mạng Gonka phi tập trung — rẻ hơn hàng trăm đến hàng nghìn lần so với API đám mây.

Bắt đầu nhanh: kết nối qua OpenAILike

API-key JoinGonka: đăng ký tại gate.joingonka.ai/register — khi bắt đầu, chúng tôi tặng 10 triệu token miễn phí — và tạo khóa jg-xxx trong Dashboard.

Cài đặt:

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

Đối với API tương thích OpenAI tùy ý, LlamaIndex cung cấp lớp OpenAILike từ gói llama_index.llms.openai_like. Ví dụ yêu cầu tối thiểu tới Gonka:

from llama_index.llms.openai_like import OpenAILike

llm = OpenAILike(
    api_base="https://gate.joingonka.ai/v1",
    api_key="jg-khóa-của-bạn",
    model="Qwen/Qwen3-235B-A22B-Instruct-2507-FP8",
    is_chat_model=True,            # Gonka — đây là endpoint chat
    is_function_calling_model=True, # tool calling gốc được hỗ trợ
    context_window=131072,         # 128K với Qwen3-235B
    max_tokens=8192,               # giới hạn đầu ra qua Gateway (Qwen)
)

response = llm.complete("Giải thích RAG là gì trong ba câu.")
print(response)

Quan trọng về OpenAILike: bạn phải chỉ định is_chat_model=True — nếu không LlamaIndex sẽ truy cập endpoint hoàn thành, mà chúng tôi không có. is_function_calling_model=True bật các lệnh gọi công cụ gốc. Đặt context_window theo mô hình để LlamaIndex cắt ngữ cảnh một cách chính xác.

Ví dụ: Đường ống RAG với query engine

Kịch bản LlamaIndex cổ điển là một chỉ mục trên tài liệu của bạn và các truy vấn đến nó thông qua query_engine. LLM toàn cục được đặt một lần thông qua Settings.llm, sau đó toàn bộ đường ống sử dụng Gonka tự động.

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 thông qua Gonka (một lần — toàn cục)
Settings.llm = OpenAILike(
    api_base="https://gate.joingonka.ai/v1",
    api_key="jg-khóa-của-bạn",
    model="Qwen/Qwen3-235B-A22B-Instruct-2507-FP8",
    is_chat_model=True,
    context_window=131072,
    max_tokens=8192,
)

# 2. Embedding cục bộ (miễn phí, không dùng OpenAI)
Settings.embed_model = HuggingFaceEmbedding(
    model_name="BAAI/bge-small-en-v1.5"
)

# 3. Tải và lập chỉ mục tài liệu từ thư mục ./data
documents = SimpleDirectoryReader("data").load_data()
index = VectorStoreIndex.from_documents(documents)

# 4. Truy vấn cơ sở kiến thức
query_engine = index.as_query_engine()
response = query_engine.query("Tài liệu này nói về điều gì?")
print(response)

Lưu ý quan trọng về embedding: Theo mặc định, VectorStoreIndex sử dụng embedding của OpenAI (text-embedding-ada-002) — đây là các lệnh gọi trả phí riêng biệt cho OpenAI, không phải Gonka. Để hoàn toàn thoát khỏi OpenAI, hãy đặt mô hình embedding cục bộ thông qua Settings.embed_model (như trong ví dụ trên — HuggingFaceEmbedding, gói pip install llama-index-embeddings-huggingface). Khi đó, quá trình tạo được thực hiện thông qua Gonka, và việc vector hóa được thực hiện cục bộ và miễn phí.

Chi phí: một yêu cầu đường ống RAG (tìm kiếm + tạo) tiêu thụ khoảng 2–5K token LLM. Thông qua Gonka, chi phí này chỉ là một phần nhỏ của xu; thông qua OpenAI/Anthropic — đắt hơn 3–4 bậc. Với lưu lượng hàng nghìn yêu cầu mỗi ngày, sự khác biệt này biến thành hàng chục nghìn đô la tiết kiệm mỗi tháng.

So sánh chi phí tải RAG

Một ứng dụng RAG không phải là một cuộc trò chuyện một lần, mà là một luồng yêu cầu liên tục: mỗi câu hỏi của người dùng kéo theo 2–5 nghìn token LLM (bản thân câu hỏi cộng với các đoạn ngữ cảnh được tìm thấy). Chúng ta hãy tính toán khối lượng điển hình và chi phí của chúng với các nhà cung cấp khác nhau. Giá của Gonka thông qua JoinGonka Gateway: đầu vào ~0.0005 đô la/1 triệu token, đầu ra ×3.

Kịch bảnToken LLMOpenAI / AnthropicJoinGonka Gonka
Một câu hỏi cho cơ sở tri thức~4K$0.01 — $0.06~$0.000005
Chatbot hỗ trợ (1K yêu cầu/ngày)~4M/ngày$10 — $60 mỗi ngày~$0.005 mỗi ngày
Lập chỉ mục + Hỏi & Đáp theo tập tài liệu (1M từ)~5M$12 — $75~$0.006
Dịch vụ sản xuất, 50K yêu cầu/tháng~200M/tháng$500 — $3,000 mỗi tháng~$0.25 mỗi tháng

Với 10 triệu token miễn phí, bạn có thể gỡ lỗi toàn bộ đường ống RAG, lập chỉ mục tập tài liệu thử nghiệm và chạy hàng nghìn yêu cầu — mà không tốn một xu nào. Với khối lượng sản xuất, JoinGonka Gateway biến RAG từ một dịch vụ đắt đỏ thành một khoản chi phí mà bạn thậm chí không cần chú ý đến.

Đại lý, gọi công cụ và lựa chọn mô hình

LlamaIndex không chỉ có thể trả lời tài liệu mà còn có thể xây dựng các tác nhân với các công cụ. Ba mô hình Gonka đều hỗ trợ gọi công cụ gốc — các tác nhân gọi hàm có cấu trúc, không cần phân tích cú pháp văn bản. Ví dụ về tác nhân có công cụ:

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-khóa-của-bạn",
    model="Qwen/Qwen3-235B-A22B-Instruct-2507-FP8",
    is_chat_model=True,
    is_function_calling_model=True,
    context_window=131072,
    max_tokens=8192,
)

def multiply(a: float, b: float) -> float:
    """Nhân hai số."""
    return a * b

agent = FunctionAgent(
    tools=[multiply],
    llm=llm,
    system_prompt="Bạn là một trợ lý hữu ích. Hãy sử dụng các công cụ khi cần.",
)

async def main():
    result = await agent.run("1234 nhân 5678 là bao nhiêu?")
    print(result)

asyncio.run(main())

Chọn một mô hình (trường model và giới hạn context_window / max_tokens tương ứng):

Mô hình (model)Ngữ cảnhMax. đầu raKhi nào nên chọn
Qwen/Qwen3-235B-A22B-Instruct-2507-FP8128K8192Mặc định: RAG, tác nhân, câu trả lời dài
moonshotai/Kimi-K2.6128K3072Lý luận mạnh mẽ và gọi công cụ
MiniMaxAI/MiniMax-M2.7128K4096Thay thế cho các tác vụ tác nhân

Giới hạn max_tokens thông qua Gateway — lên đến 8192 cho mô hình Qwen3; đối với Kimi và MiniMax, hãy chỉ định 3072 và 4096 tương ứng. Nếu max_tokens không được chỉ định cho yêu cầu không streaming, theo mặc định sẽ trả về tối đa 1500 token — đối với các phản hồi RAG và các bước của tác nhân, hãy chỉ định giá trị rõ ràng.

TypeScript: Đối với LlamaIndex.TS, có một cách tương tự — lớp OpenAI từ gói @llamaindex/openai chấp nhận baseURLapiKey (hoặc đọc các biến OPENAI_BASE_URL / OPENAI_API_KEY), vì vậy cùng một Gateway cũng có thể được kết nối trong ngăn xếp Node.js. Nếu bạn đang xây dựng ứng dụng AI và trên các framework Python, hãy xem hướng dẫn về LangChain.

LlamaIndex + Gonka = RAG và tác nhân sẵn sàng sản xuất với chi phí chỉ vài xu. Kết nối qua OpenAILike (is_chat_model=True), gọi công cụ gốc, embedding cục bộ — giá đầu vào là $0.0005/1M thay vì $2.50–15 của OpenAI. 10M token miễn phí đủ để gỡ lỗi toàn bộ đường ống.

Muốn tìm hiểu thêm?

Khám phá các phần khác hoặc bắt đầu kiếm GNK ngay bây giờ.

Nhận 10M token miễn phí →