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ụ 54
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.0062/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 — khi khởi đầu chúng tôi tặng 3M token miễn phí — và tạo key jg-xxx trong Dashboard.

Cài đặt:

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

Đối với bất kỳ API tương thích OpenAI nào, LlamaIndex cung cấp class OpenAILike từ package llama_index.llms.openai_like. Ví dụ tối giản để gọi 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)

Lưu ý quan trọng về OpenAILike: bắt buộc đặt is_chat_model=True — nếu không LlamaIndex sẽ đi vào endpoint Completions cũ với prompt thô thay vì hội thoại. is_function_calling_model=True bật native tool calls. Hãy đặt context_window theo model để LlamaIndex cắt ngữ cảnh chính xác.

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

Kịch bản LlamaIndex kinh điển — lập chỉ mục cho tài liệu của bạn và truy vấn nó qua query_engine. LLM toàn cục được thiết lập một lần qua Settings.llm, sau đó toàn bộ pipeline sẽ tự động 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 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)

Một lưu ý cực kỳ quan trọng về embeddings: mặc định VectorStoreIndex dùng embeddings của OpenAI (text-embedding-ada-002) — đây là các lệnh gọi tính phí riêng tới OpenAI, không phải tới Gonka. Để thoát hoàn toàn khỏi OpenAI, hãy thiết lập model embeddings cục bộ qua Settings.embed_model (như trong ví dụ trên — HuggingFaceEmbedding, gói pip install llama-index-embeddings-huggingface). Khi đó phần sinh văn bản chạy qua Gonka, còn phần vector hóa diễn ra cục bộ và miễn phí.

Chi phí: một truy vấn của pipeline RAG (tìm kiếm + sinh văn bản) tiêu tốn ~2–5K token LLM. Qua Gonka chỉ tốn vài phần trăm xu; qua OpenAI/Anthropic — đắt hơn 3–4 bậc độ lớn. Với lưu lượng hàng nghìn truy vấn mỗi ngày, khoản chênh lệch đó 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

Ứng dụng RAG không phải một cuộc trò chuyện đơn lẻ mà là dò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–5K token LLM (bản thân câu hỏi cộng các đoạn ngữ cảnh tìm được). Hãy cùng tính khối lượng điển hình và chi phí tương ứng ở các nhà cung cấp khác nhau. Giá Gonka qua JoinGonka Gateway: đầu vào ~$0.0062/1M, đầu ra ×3.

Kịch bảnToken LLMOpenAI / AnthropicJoinGonka Gonka
Một câu hỏi tới 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
Đánh chỉ mục + Q&A trên kho văn bản (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 những yêu cầu đầu tiên của pipeline RAG, đánh chỉ mục kho thử nghiệm và chạy hàng nghìn truy vấn — mà không tốn một xu. Ở khối lượng production, JoinGonka Gateway biến RAG từ một dịch vụ đắt đỏ thành khoản chi phí có thể bỏ qua hoàn toàn.

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

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

Chọn model (trường model và các giới hạn tương ứng context_window / max_tokens):

Model (model)Ngữ cảnhĐầu ra tối đaKhi nào dùng
MiniMaxAI/MiniMax-M2.7180K8192Mặc định (như trong ví dụ): tool calling, agent, RAG
deepseek-ai/DeepSeek-V4-Flash-0731380K32768Ngữ cảnh dài thứ hai của mạng, đầu ra dài nhất, prompt lớn giá rẻ
zai-org/GLM-5.3-Flash390K8192Model reasoning: logic phức tạp, ngữ cảnh dài nhất của mạng; phần suy luận tiêu tốn một phần max_tokens

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

TypeScript: với LlamaIndex.TS có một lộ trình tương tự — lớp OpenAI từ gói @llamaindex/openai nhận baseURL và apiKey (hoặc đọc các biến OPENAI_BASE_URL / OPENAI_API_KEY), nên cùng một Gateway đó cũng kết nối được trong stack Node.js. Nếu bạn cũng xây dựng ứng dụng AI trên các framework Python, 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.0062/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í →