Tìm hiểu thông tin cơ bản trên Google Tìm kiếm

Tính năng Bám sát nguồn bằng Google Tìm kiếm kết nối mô hình Gemini với nội dung trên web theo thời gian thực và hỗ trợ tất cả các ngôn ngữ hiện có. Nhờ đó, Gemini có thể đưa ra câu trả lời chính xác hơn và trích dẫn các nguồn có thể xác minh ngoài điểm cắt kiến thức.

Tính năng Bám sát nguồn giúp bạn xây dựng các ứng dụng có thể:

  • Tăng độ chính xác về mặt thực tế: Giảm hiện tượng ảo giác của mô hình bằng cách dựa trên thông tin thực tế.
  • Truy cập vào thông tin theo thời gian thực: Trả lời các câu hỏi về các sự kiện và chủ đề gần đây.
  • Cung cấp thông tin trích dẫn: Xây dựng niềm tin của người dùng bằng cách cho biết nguồn của các tuyên bố của mô hình.

Python

from google import genai
from google.genai import types

client = genai.Client()

grounding_tool = types.Tool(
    google_search=types.GoogleSearch()
)

config = types.GenerateContentConfig(
    tools=[grounding_tool]
)

response = client.models.generate_content(
    model="gemini-3.5-flash",
    contents="Who won the euro 2024?",
    config=config,
)

print(response.text)

JavaScript

import { GoogleGenAI } from "@google/genai";

const ai = new GoogleGenAI({});

const groundingTool = {
  googleSearch: {},
};

const config = {
  tools: [groundingTool],
};

const response = await ai.models.generateContent({
  model: "gemini-3.5-flash",
  contents: "Who won the euro 2024?",
  config,
});

console.log(response.text);

REST

curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-3.5-flash:generateContent" \
  -H "x-goog-api-key: $GEMINI_API_KEY" \
  -H "Content-Type: application/json" \
  -X POST \
  -d '{
    "contents": [
      {
        "parts": [
          {"text": "Who won the euro 2024?"}
        ]
      }
    ],
    "tools": [
      {
        "google_search": {}
      }
    ]
  }'

Bạn có thể tìm hiểu thêm bằng cách dùng thử sổ tay về công cụ Tìm kiếm.

Cách hoạt động của tính năng Bám sát nguồn bằng Google Tìm kiếm

Khi bạn bật công cụ google_search, mô hình sẽ tự động xử lý toàn bộ quy trình tìm kiếm, xử lý và trích dẫn thông tin.

grounding-overview

  1. Câu lệnh của người dùng: Ứng dụng của bạn gửi câu lệnh của người dùng đến Gemini API khi bật công cụ google_search.
  2. Phân tích câu lệnh: Mô hình phân tích câu lệnh và xác định xem Google Tìm kiếm có thể cải thiện câu trả lời hay không.
  3. Google Tìm kiếm: Nếu cần, mô hình sẽ tự động tạo một hoặc nhiều cụm từ tìm kiếm và thực thi các cụm từ đó.
  4. Xử lý kết quả tìm kiếm: Mô hình xử lý kết quả tìm kiếm, tổng hợp thông tin và đưa ra câu trả lời.
  5. Câu trả lời bám sát nguồn: API trả về câu trả lời cuối cùng, thân thiện với người dùng và bám sát kết quả tìm kiếm. Câu trả lời này bao gồm câu trả lời bằng văn bản của mô hình và groundingMetadata cùng với các cụm từ tìm kiếm, kết quả trên web và thông tin trích dẫn.

Tìm hiểu về câu trả lời bám sát nguồn

Khi một câu trả lời bám sát nguồn thành công, câu trả lời đó sẽ bao gồm trường groundingMetadata. Dữ liệu có cấu trúc này là cần thiết để xác minh các tuyên bố và xây dựng trải nghiệm trích dẫn phong phú trong ứng dụng của bạn.

{
  "candidates": [
    {
      "content": {
        "parts": [
          {
            "text": "Spain won Euro 2024, defeating England 2-1 in the final. This victory marks Spain's record fourth European Championship title."
          }
        ],
        "role": "model"
      },
      "groundingMetadata": {
        "webSearchQueries": [
          "UEFA Euro 2024 winner",
          "who won euro 2024"
        ],
        "searchEntryPoint": {
          "renderedContent": "<!-- HTML and CSS for the search widget -->"
        },
        "groundingChunks": [
          {"web": {"uri": "https://vertexaisearch.cloud.google.com.....", "title": "aljazeera.com"}},
          {"web": {"uri": "https://vertexaisearch.cloud.google.com.....", "title": "uefa.com"}}
        ],
        "groundingSupports": [
          {
            "segment": {"startIndex": 0, "endIndex": 85, "text": "Spain won Euro 2024, defeatin..."},
            "groundingChunkIndices": [0]
          },
          {
            "segment": {"startIndex": 86, "endIndex": 210, "text": "This victory marks Spain's..."},
            "groundingChunkIndices": [0, 1]
          }
        ]
      }
    }
  ]
}

Gemini API trả về thông tin sau đây cùng với groundingMetadata:

  • webSearchQueries : Mảng các cụm từ tìm kiếm đã sử dụng. Điều này hữu ích cho việc gỡ lỗi và tìm hiểu quy trình suy luận của mô hình.
  • searchEntryPoint : Chứa HTML và CSS để hiển thị các Đề xuất tìm kiếm bắt buộc. Các yêu cầu sử dụng đầy đủ được nêu chi tiết trong Điều khoản dịch vụ.
  • groundingChunks : Mảng các đối tượng chứa nguồn trên web (urititle).
  • groundingSupports : Mảng các đoạn để kết nối câu trả lời text của mô hình với các nguồn trong groundingChunks. Mỗi đoạn liên kết một segment văn bản (được xác định bởi startIndexendIndex) với một hoặc nhiều groundingChunkIndices. Đây là chìa khoá để xây dựng thông tin trích dẫn ngay trong văn bản.

Bạn cũng có thể sử dụng tính năng Bám sát nguồn bằng Google Tìm kiếm kết hợp với công cụ ngữ cảnh URL để bám sát nguồn câu trả lời trong cả dữ liệu công khai trên web và các URL cụ thể mà bạn cung cấp.

Phân bổ nguồn bằng thông tin trích dẫn ngay trong văn bản

API trả về dữ liệu trích dẫn có cấu trúc, giúp bạn kiểm soát hoàn toàn cách hiển thị nguồn trong giao diện người dùng. Bạn có thể sử dụng các trường groundingSupportsgroundingChunks để liên kết trực tiếp các câu lệnh của mô hình với nguồn của chúng. Dưới đây là một mẫu phổ biến để xử lý siêu dữ liệu nhằm tạo câu trả lời có thông tin trích dẫn ngay trong văn bản và có thể nhấp vào.

Python

def add_citations(response):
    text = response.text
    supports = response.candidates[0].grounding_metadata.grounding_supports
    chunks = response.candidates[0].grounding_metadata.grounding_chunks

    # Sort supports by end_index in descending order to avoid shifting issues when inserting.
    sorted_supports = sorted(supports, key=lambda s: s.segment.end_index, reverse=True)

    for support in sorted_supports:
        end_index = support.segment.end_index
        if support.grounding_chunk_indices:
            # Create citation string like [1](link1)[2](link2)
            citation_links = []
            for i in support.grounding_chunk_indices:
                if i < len(chunks):
                    uri = chunks[i].web.uri
                    citation_links.append(f"[{i + 1}]({uri})")

            citation_string = ", ".join(citation_links)
            text = text[:end_index] + citation_string + text[end_index:]

    return text

# Assuming response with grounding metadata
text_with_citations = add_citations(response)
print(text_with_citations)

JavaScript

function addCitations(response) {
    let text = response.text;
    const supports = response.candidates[0]?.groundingMetadata?.groundingSupports;
    const chunks = response.candidates[0]?.groundingMetadata?.groundingChunks;

    // Sort supports by end_index in descending order to avoid shifting issues when inserting.
    const sortedSupports = [...supports].sort(
        (a, b) => (b.segment?.endIndex ?? 0) - (a.segment?.endIndex ?? 0),
    );

    for (const support of sortedSupports) {
        const endIndex = support.segment?.endIndex;
        if (endIndex === undefined || !support.groundingChunkIndices?.length) {
        continue;
        }

        const citationLinks = support.groundingChunkIndices
        .map(i => {
            const uri = chunks[i]?.web?.uri;
            if (uri) {
            return `[${i + 1}](${uri})`;
            }
            return null;
        })
        .filter(Boolean);

        if (citationLinks.length > 0) {
        const citationString = citationLinks.join(", ");
        text = text.slice(0, endIndex) + citationString + text.slice(endIndex);
        }
    }

    return text;
}

const textWithCitations = addCitations(response);
console.log(textWithCitations);

Câu trả lời mới có thông tin trích dẫn ngay trong văn bản sẽ có dạng như sau:

Spain won Euro 2024, defeating England 2-1 in the final.[1](https:/...), [2](https:/...), [4](https:/...), [5](https:/...) This victory marks Spain's record-breaking fourth European Championship title.[5]((https:/...), [2](https:/...), [3](https:/...), [4](https:/...)

Giá

Khi bạn sử dụng tính năng Bám sát nguồn bằng Google Tìm kiếm với Gemini 3, dự án của bạn sẽ bị tính phí cho mỗi cụm từ tìm kiếm mà mô hình quyết định thực thi. Nếu mô hình quyết định thực thi nhiều cụm từ tìm kiếm để trả lời một câu lệnh (ví dụ: tìm kiếm "UEFA Euro 2024 winner""Spain vs England Euro 2024 final score" trong cùng một lệnh gọi API), thì yêu cầu đó sẽ được tính là 2 lần sử dụng công cụ có tính phí. Đối với mục đích tính phí, chúng tôi sẽ bỏ qua các cụm từ tìm kiếm trống trên web khi tính số lượng cụm từ tìm kiếm riêng biệt. Mô hình tính phí này chỉ áp dụng cho các mô hình Gemini 3; khi bạn sử dụng tính năng bám sát nguồn tìm kiếm với Gemini 2.5 hoặc các mô hình cũ hơn, dự án của bạn sẽ bị tính phí cho mỗi câu lệnh.

Để biết thông tin chi tiết về giá, hãy xem trang giá của Gemini API.

Mô hình được hỗ trợ

Bạn có thể xem các tính năng đầy đủ trên trang tổng quan về mô hình.

Mô hình Bám sát nguồn bằng Google Tìm kiếm
Gemini 3.5 Flash ✔️
Gemini 3.1 Flash-Lite ✔️
Gemini 3.1 Flash Image Preview ✔️
Gemini 3.1 Pro Preview ✔️
Gemini 3 Pro Image Preview ✔️
Gemini 3 Flash Preview ✔️
Gemini 3.1 Flash-Lite Preview ✔️
Gemini 2.5 Pro ✔️
Gemini 2.5 Flash ✔️
Gemini 2.5 Flash-Lite ✔️
Gemini 2.0 Flash ✔️

Các cách kết hợp công cụ được hỗ trợ

Bạn có thể sử dụng tính năng Bám sát nguồn bằng Google Tìm kiếm với các công cụ khác như thực thi mãngữ cảnh URL để hỗ trợ các trường hợp sử dụng phức tạp hơn.

Các mô hình Gemini 3 hỗ trợ việc kết hợp các công cụ tích hợp sẵn (như tính năng Bám sát nguồn bằng Google Tìm kiếm) với các công cụ tuỳ chỉnh (gọi hàm). Tìm hiểu thêm trên trang về các cách kết hợp công cụ .

Bước tiếp theo