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

Điều hướng

▸ Bắt đầu tại đây Theo vai trò

Danh mục

Công cụ 37
Bảng thuật ngữ 12

Công cụ

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

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

Một vấn đề là chi phí inferenced. RAG về bản chất rất ngốn tài nguyên: với mỗi câu hỏi, mô hình nhận được yêu cầu 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 dữ liệu lớn, các embedding được thêm vào. Ở quy mô production, đây là hàng ngàn yêu cầu mỗi ngày. Với OpenAI ($2.50–15 cho 1M tokens) hoặc Anthropic ($3–15 cho 1M), ngay cả một dịch vụ hỏi đáp khiêm tốn cũng có thể tốn hàng chục ngàn đô la mỗi tháng.

LlamaIndex hoạt động tự nhiên với bất kỳ endpoint tương thích OpenAI nào thông qua class OpenAILike. Điều này có nghĩa là JoinGonka Gateway kết nối chỉ với vài dòng code — không cần provider tùy chỉnh hay bản vá. Kết quả: cùng một hệ thống RAG hoạt động với giá $0.0069/1M tokens đầu vào (đầu ra ×3) thông qua mạng lưới phi tập trung Gonka — rẻ hơn hàng trăm, hàng ngàn lần so với các Cloud API.

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

API-key JoinGonka: đăng ký tại gate.joingonka.ai/register — chúng tôi tặng 3M token miễn phí khi bắt đầu — và tạo key 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 bất kỳ, LlamaIndex cung cấp class OpenAILike từ gói llama_index.llms.openai_like. Ví dụ tối thiểu về yêu cầu tới Gonka:

from llama_index.llms.openai_like import OpenAILike

llm = OpenAILike(
    api_base="https://gate.joingonka.ai/v1",
    api_key="jg-key-cua-ban",
    model="MiniMaxAI/MiniMax-M2.7",
    is_chat_model=True,            # Gonka — là chat-endpoint
    is_function_calling_model=True, # hỗ trợ native tool calling
    context_window=200000,         # 200K cho các mô hình mạng lưới
    max_tokens=8192,               # giới hạn đầu ra thông qua Gateway
)

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

Lưu ý quan trọng về OpenAILike: bắt buộc phải chỉ định is_chat_model=True — nếu không LlamaIndex sẽ gửi yêu cầu tới completion-endpoint, cái mà chúng tôi không có. is_function_calling_model=True kích hoạt native tool calls. Hãy thiết lập context_window theo từng mô hình để LlamaIndex cắt context 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à tạo index từ tài liệu của bạn và gửi yêu cầu thông qua query_engine. Global LLM được xác định một lần qua Settings.llm, sau đó toàn bộ pipeline sẽ tự động sử dụng 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 qua Gonka (một lần — toàn cục)
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=200000,
    max_tokens=8192,
)

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

# 3. Tải và index 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ở tri thức
query_engine = index.as_query_engine()
response = query_engine.query("Tài liệu này nói về cái gì?")
print(response)

Điểm quan trọng về embeddings: theo mặc định VectorStoreIndex sử dụng embeddings của OpenAI (text-embedding-ada-002) — đây là các lệnh gọi trả phí riêng biệt tới OpenAI, không phải Gonka. Để hoàn toàn loại bỏ OpenAI, hãy thiết lập local embedding model thông qua Settings.embed_model (như ví dụ trên — HuggingFaceEmbedding, gói pip install llama-index-embeddings-huggingface). Khi đó, quá trình tạo nội dung sẽ sử dụng Gonka, còn vector hóa thực hiện cục bộ và miễn phí.

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

So sánh chi phí tải RAG

Ứng dụng RAG không phải là một phiên chat 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 tiêu tốn 2–5K 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). Hãy tính toán khối lượng điển hình và chi phí của chúng trên các nhà cung cấp khác nhau. Giá của Gonka thông qua JoinGonka Gateway: đầu vào ~$0.0069/1M, đầu ra ×3.

Kịch bảnToken LLMOpenAI / AnthropicJoinGonka Gonka
Một câu hỏi đến cơ sở tri thức~4K$0.01 — $0.06~$0.00004
Chatbot hỗ trợ (1K yêu cầu/ngày)~4M/ngày$10 — $60 mỗi ngày~$0.038 mỗi ngày
Indexing + Q&A trên kho dữ liệu (1M từ)~5M$12 — $75~$0.048
Dịch vụ Production, 50K yêu cầu/tháng~200M/tháng$500 — $3,000 mỗi tháng~$1.92 mỗi tháng

Với 3M token miễn phí, bạn có thể chạy các yêu cầu RAG đầu tiên, index kho dữ liệu thử nghiệm và chạy hàng ngàn yêu cầu — mà không tốn một xu. Ở quy mô production, 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 để ý tới.

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

LlamaIndex không chỉ có thể trả lời dựa trên tài liệu mà còn có thể xây dựng các agent với công cụ. Cả ba mô hình Gonka đều hỗ trợ tool calling gốc — các agent gọi hàm một cách có cấu trúc mà không cần phân tích văn bản. Ví dụ về agent với 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-your-key",
    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:
    """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ụ để tính toán.",
)

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

asyncio.run(main())

Lựa chọn mô hình (trường model và các giới hạn tương ứng context_window / max_tokens):

Mô hình (model)ContextMax outputKhi nào nên dùng
MiniMaxAI/MiniMax-M2.7200K8192Mặc định (như ví dụ): tool calling, các agent, RAG
deepseek-ai/DeepSeek-V4-Flash-0731380K32768Context dài thứ hai trong mạng, output dài nhất, các prompt lớn giá rẻ
zai-org/GLM-5.3-Flash390K8192Mô hình Reasoning: logic phức tạp, context dài nhất trong mạng; suy luận tiêu tốn một phần max_tokens

Giới hạn max_tokens thông qua Gateway — lên tới 8192 cho MiniMax M2.7 và GLM-5.3 Flash, lên tới 32768 cho DeepSeek V4 Flash. Nếu max_tokens không được chỉ định cho yêu cầu không streaming, mặc định sẽ trả về tối đa 1500 token — đối với phản hồi RAG và các bước của agent, hãy chỉ định giá trị rõ ràng.

TypeScript: đối với LlamaIndex.TS, có lộ trình 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 kết nối được trong stack Node.js. Nếu bạn đang xây dựng các ứng dụng AI bằng Python framework, hãy xem thêm hướng dẫn về LangChain.

LlamaIndex + Gonka = RAG và các agent sẵn sàng cho production với chi phí cực thấp. Kết nối qua OpenAILike (is_chat_model=True), native tool calling, local embeddings — đầu vào $0.0069/1M thay vì $2.50–15 tại OpenAI. Token khởi đầu cho phép bạn dùng thử pipeline mà không cần thẻ.

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 token miễn phí →