# RAG จากเว็บสด: ดึงข้อมูลด้วยการค้นหา ตอบพร้อมการอ้างอิง

> Retrieval-augmented generation จากเว็บสด: ค้นหา อ่านหน้าเว็บชั้นนำเป็น Markdown แบ่งเป็น chunk แล้วตอบพร้อมการอ้างอิง โค้ด Python ไม่ต้อง KYC จ่ายด้วยคริปโต

- URL: https://llmwebsearch.com/th/use-cases/rag/
- อัปเดตล่าสุด: 2026-10-22
- ผู้เผยแพร่: LLMWebSearch (https://llmwebsearch.com)

ดัชนีเวกเตอร์เก็บสิ่งที่คุณโหลดไว้เมื่อเดือนที่แล้ว บางคำถามต้องการสิ่งที่เว็บพูดวันนี้ Live-web RAG ดึงข้อมูล ณ เวลาที่ถาม: ค้นหาหนึ่งครั้ง หน้าเว็บชั้นนำเป็น Markdown ใส่ chunk ไม่กี่ชิ้นลงใน prompt และอ้างอิงกลับไปยังแต่ละหน้า

**คำตอบสั้น — จะทำ RAG ด้วยผลการค้นหาเว็บสดได้อย่างไร?**

รันการค้นหาเว็บ ณ เวลาที่ถาม อ่านหน้าเว็บชั้นนำ แบ่งเป็น chunk เก็บชิ้นที่เกี่ยวข้องที่สุด แล้วขอให้โมเดลตอบพร้อมการอ้างอิงแบบมีหมายเลข **LLMWebSearch** จัดการสองขั้นแรกในคำขอเดียว: ผลลัพธ์ที่จัดอันดับพร้อม 3 หน้าแรกเป็น Markdown หนึ่งเครดิต จาก US$1.20/1K การค้นหา ไม่ต้อง KYC จ่ายด้วยคริปโต

## live-web RAG คืออะไร?

คือ retrieval-augmented generation ที่ขั้นตอนการดึงข้อมูลเป็นการค้นหาเว็บแทนการค้นหาในดัชนีของคุณเอง คำถามถูกส่งไปยัง search API API ส่งคืนหน้าเว็บ และโมเดลตอบจากหน้าเว็บเหล่านั้น

รูปแบบนี้เหมาะกับคำถามเกี่ยวกับสิ่งที่มีการเปลี่ยนแปลง: ราคา การเปิดตัว กฎ ตารางเวลา และข่าว ยังเหมาะกับคำถาม long-tail ที่เอกสารของคุณเองไม่เคยครอบคลุม ค่าใช้จ่ายคือการค้นหาหนึ่งครั้งต่อคำถาม หรือสองครั้งเมื่อครั้งแรกพลาด

## ควรดึงข้อมูลสดเมื่อใดและควรเก็บเมื่อใด?

เก็บสิ่งที่มั่นคงและเป็นของคุณ ดึงสิ่งที่เปลี่ยนแปลง คู่มือผลิตภัณฑ์ นโยบายภายใน และเอกสารของคุณเองอยู่ในดัชนีเวกเตอร์ รีเฟรชตามตาราง ราคาคู่แข่ง กฎระเบียบ และข่าว อยู่ในขอบเขตการดึงสด

หลายทีมใช้ทั้งสองอย่างร่วมกัน ค้นหาดัชนีของตัวเองก่อน แล้วเรียกเว็บเฉพาะเมื่อดัชนีไม่มีการจับคู่ที่ดี หรือเมื่อคำถามกล่าวถึงวันที่ล่าสุด

หากคุณตัดสินใจเก็บหน้าเว็บที่ดึงมา โปรดทราบจุดยืนของเรา: เราไม่ฝึกโมเดลใดๆ ด้วยคำค้นหาของคุณหรือข้อมูลที่ API ส่งกลับ และเราไม่เพิ่มกฎของเราเองต่อต้านการจัดเก็บผลลัพธ์; สิทธิ์ของเว็บไซต์ที่คุณอ่านหน้ายังคงมีผล ตรวจสอบข้อกำหนดของแต่ละเว็บไซต์ก่อนสร้างสำเนาถาวรของเนื้อหา

## จะเปลี่ยนผลการค้นหาเป็น chunk ได้อย่างไร?

แบ่งแต่ละหน้าตามหัวข้อ แล้วตัดส่วนที่ยาวเกินให้เป็นความยาวคงที่ Markdown ทำให้เรื่องนี้ง่าย เพราะหัวข้อคือบรรทัดที่เริ่มด้วย `#` เก็บ URL ต้นทางและชื่อเรื่องไว้ในทุก chunk เพื่อให้การอ้างอิงอยู่รอดหลังการแบ่ง

ตัวอย่างด้านล่างค้นหา อ่านสามหน้า แบ่งเป็น chunk แล้วเลือกหก chunk ที่มีคำร่วมกับคำถามมากที่สุด ในโปรดักชันให้แทนการนับคำด้วย embedding model ของคุณ โครงสร้างยังเหมือนเดิม

*Python: การดึงข้อมูลจากเว็บสดด้วย chunk และแหล่งข่าวแบบมีหมายเลข*

```python
import os
import re

import requests

API = "https://llmwebsearch.com/api/v1/search"
HEADERS = {"Authorization": "Bearer " + os.environ["LLMWEBSEARCH_API_KEY"]}


def live_chunks(query, read=3, chunk_len=1200):
    """Search, then cut each page that was read into heading-based chunks tagged with its source."""
    body = {"q": query, "max_results": 5, "read": read, "max_chars": 12000}
    results = requests.post(API, headers=HEADERS, json=body, timeout=60).json()["results"]
    chunks = []
    for r in results:
        if r.get("content_status") != "ok":
            continue
        for section in re.split(r"\n(?=#{1,3} )", r["content"]):
            section = section.strip()
            for start in range(0, len(section), chunk_len):
                chunks.append({"url": r["url"], "title": r["title"], "text": section[start:start + chunk_len]})
    return chunks


def top_chunks(chunks, question, k=6):
    """A plain keyword score; swap in your embedding model for better ranking."""
    words = set(re.findall(r"\w{4,}", question.lower()))

    def score(chunk):
        return sum(1 for w in re.findall(r"\w{4,}", chunk["text"].lower()) if w in words)

    return sorted(chunks, key=score, reverse=True)[:k]


def build_prompt(question):
    picked = top_chunks(live_chunks(question), question)
    urls = list(dict.fromkeys(c["url"] for c in picked))
    blocks = [f"[{urls.index(c['url']) + 1}] {c['title']}\n{c['text']}" for c in picked]
    sources = "\n".join(f"[{i}] {u}" for i, u in enumerate(urls, 1))
    return (
        "Use only the context to answer and cite sources as [n].\n\n"
        + "\n\n".join(blocks)
        + f"\n\nSources:\n{sources}\n\nQuestion: {question}"
    )
```

## แต่ละคำถามควรอ่านกี่หน้า?

สามหน้าเป็นจุดเริ่มต้นที่ดี และทำให้การค้นหาอยู่ที่หนึ่งเครดิต คำถามเชิงข้อเท็จจริงส่วนใหญ่ตอบได้ในสองหรือสามหน้าแรกของคำค้นหาที่ดี

ขอหน้าเว็บที่ยาวกว่าที่จะขอใน chat agent เพราะ chunker จะทิ้งข้อความส่วนใหญ่อยู่แล้ว `max_chars` ที่ 10,000 ถึง 15,000 ต่อหน้าทำให้ ranker มีให้เลือกเพียงพอ หากคำตอบขึ้นอยู่กับเว็บไซต์ที่รู้จักเพียงแห่งเดียว ให้เพิ่มด้วย `include_domains` แทนการอ่านหน้าเพิ่ม

## จะทำให้โมเดลอ้างอิงแหล่งข่าวได้อย่างไร?

ใส่หมายเลขให้แหล่งข่าวใน prompt และขอให้ตอบด้วยหมายเลขเหล่านั้น คำสั่งสั้น ๆ ได้ผลดี: ใช้เฉพาะ context อ้างอิงทุกข้อกล่าวอ้างเป็น [n] และบอกเมื่อ context ไม่ครอบคลุมคำถาม

วางรายการแหล่งข่าวไว้ท้าย prompt โดยมีหนึ่ง URL ต่อหนึ่งหมายเลข จากนั้นแสดง [n] เป็นลิงก์ในอินเทอร์เฟซของคุณ ผู้ใช้ไว้วางใจคำตอบที่ตรวจสอบได้ และการอ้างอิงที่ผิดสังเกตได้ง่ายในการรีวิว

## ถ้าหน้าเว็บถูกบล็อกหรือว่างเปล่าล่ะ?

ข้ามมันและใช้หน้าอื่น ทุกผลลัพธ์มี `content_status` เฉพาะผลลัพธ์ `ok` เท่านั้นที่มีข้อความ หน้าเว็บอาจหายไปเพราะ ตัวอ่านของเราเคารพ robots.txt: แนะนำตัวว่าเป็น LLMWebSearch ทำตามกฎที่เว็บไซต์เขียนไว้สำหรับมันหรือสำหรับ robots ทั้งหมด และละเว้นเนื้อหาของหน้าใดก็ตามที่มันไม่ได้รับอนุญาตให้อ่าน

เมื่อทุกหน้าของการค้นหากลับมาว่างเปล่า ให้ลองอีกครั้งด้วยคำค้นหาอื่น หรือเพิ่ม `include_domains` สำหรับเว็บไซต์ที่คุณรู้ว่าเปิดอยู่ เมื่อเว็บไซต์ปิดกั้นตัวอ่านของเรา ผลลัพธ์จะกลับมาโดยไม่มีเนื้อหาและมีสถานะของเว็บไซต์: เราไม่แก้ CAPTCHA ไม่ลงชื่อเข้าใช้บัญชี และไม่หลบเลี่ยงการบล็อกหรือ paywall.

## live-web RAG มีค่าใช้จ่ายเท่าไร?

ส่วนใหญ่หนึ่งการค้นหาต่อคำถาม ผู้ช่วยฝ่ายสนับสนุนที่ตอบ 5,000 คำถามต่อเดือน โดยค้นหาครั้งที่สองสำหรับหนึ่งในห้าคำถาม ใช้ประมาณ 6,000 การค้นหา ค้นหา 25,000 ครั้ง ที่ US$41.25 ครอบคลุมสี่เดือนในลักษณะนั้น

โมเดลของคุณยังอ่าน chunk ที่คุณส่งให้ด้วย หก chunk ขนาด 1,200 ตัวอักษรเพิ่มประมาณ 2,000 token ต่อคำถาม ซึ่งคุณควบคุมได้ผ่านขนาดและจำนวน chunk

## แพ็กไหนเหมาะกับงาน RAG?

หนึ่งเครดิตต่อหนึ่งคำถามสำหรับ pipeline ส่วนใหญ่ เครดิตการค้นหาไม่มีวันหมดอายุ: สิ่งที่คุณไม่ได้ใช้ในเดือนนี้ยังอยู่ให้ใช้ในปีหน้า

| แพ็กเกจ | จำนวน | ราคา | ราคาต่อหน่วย |
| --- | --- | --- | --- |
| ทดลอง | 5,000 การค้นหา | US$9.25 | US$1.85/1K การค้นหา |
| Builder | ค้นหา 25,000 ครั้ง | US$41.25 | US$1.65/1K การค้นหา |
| ระดับโปรดักชัน | ค้นหา 100,000 ครั้ง | US$145 | US$1.45/1K การค้นหา |

ในทุกแพ็กเกจ: อ่าน 3 หน้าแรกเป็น Markdown · ตัวกรองประเทศ ภาษา เวลา และโดเมน · การเรียกที่ไม่สำเร็จไม่ถูกเรียกเก็บเงิน · เครดิตไม่มีวันหมดอายุ

**ก่อนที่คุณจะจ่าย**

- ยอดเติมขั้นต่ำ US$25 เติมเงินด้วยคริปโตครั้งเดียว แล้วซื้อแพ็กเกจใดก็ได้จากยอดคงเหลือ
- เงินในยอดคงเหลือของคุณไม่มีวันหมดอายุ และใช้ซื้อเครดิตการค้นหาได้ทุกเมื่อที่ต้องการ เมื่อแพ็กมีราคาถูกกว่ายอดเติมขั้นต่ำ ส่วนที่คุณจ่ายเกินไปเพียงเพื่อให้ถึงขั้นต่ำนั้นจะคืนให้คุณเมื่อร้องขอ ภายใน 30 วันนับจากวันที่ชำระเงิน เป็น USDT หรือ USDC โดยต้องยังไม่ได้ใช้จ่าย ส่วนที่เหลือของยอดคงเหลือจะไม่คืนให้ เว้นแต่กฎหมายกำหนด.
- เครดิตเข้ายอดคงเหลือเมื่อการชำระเงินของคุณได้รับการตรวจสอบบนบล็อกเชนแล้ว เวลายืนยันบนเครือข่ายโดยทั่วไป: BTC ≈ 20 นาที · USDT TRC-20 ≈ 1 นาที · USDT ERC-20 ≈ 5 นาที · USDC ERC-20 ≈ 5 นาที · ETH ≈ 5 นาที · SOL ≈ 1 นาที · LTC ≈ 15 นาที

## RAG บนเว็บแบบเรียลไทม์: คำถามที่พบบ่อย

### ใช้ LangChain หรือ LlamaIndex ได้ไหม?

ได้ [หน้า LangChain และ LlamaIndex](https://llmwebsearch.com/th/docs/langchain/) ใช้ห่อการค้นหาเป็น retriever และเป็น tool

### ดึงข้อมูลจาก URL ที่รู้อยู่แล้วได้ไหม?

ได้ ด้วย [extract endpoint](https://llmwebsearch.com/th/docs/extract/) การอ่านหน้าเว็บที่คุณมี URL อยู่แล้วใช้ 1 เครดิตต่อกลุ่ม 3 หน้าที่เริ่มอ่านและส่งกลับพร้อมเนื้อหา สูงสุด 20 URL ต่อการเรียก; URL ที่ถูกปฏิเสธหรือล้มเหลวไม่ถูกนับ

### LLMWebSearch เก็บหน้าที่อ่านไว้ให้ฉันไหม?

ไม่ แต่ละการเรียกทิ้งบันทึกไว้หนึ่งบรรทัด: เวลา บัญชี อักขระ 60 ตัวแรกของคำค้นหา จำนวนผลลัพธ์และหน้าที่ส่งกลับ และเครดิต บรรทัดถูกลบหลัง 30 วัน ไม่มีการเก็บเนื้อหาของหน้าที่เราอ่าน หมายเลขบัญชี คำสั่งซื้อ การเติมเงิน และยอดเครดิตรวมยังคงอยู่ตราบเท่าที่บัญชียังมีอยู่ จากนั้นเก็บไว้เพียงเท่าที่กฎหมายบัญชีกำหนด หน่วยงานได้รับบันทึกเฉพาะเมื่อกฎหมายบังคับเรา

### จำกัดการดึงข้อมูลให้เป็นภาษาเดียวหรือประเทศเดียวได้ไหม?

ได้ ตั้งค่า `language` และ `country` เช่น `language=de` และ `country=de` สำหรับผลลัพธ์ภาษาเยอรมันจากประเทศเยอรมนี

---

LLMWebSearch: LLMWebSearch คือ web search API สำหรับ AI agents ที่คืนผลการค้นหาที่จัดอันดับแล้วพร้อมเนื้อหาของหน้าอันดับต้นๆ ในรูปแบบ Markdown จ่ายด้วยคริปโตโดยไม่ต้องอัปโหลดเอกสารยืนยันตัวตน เครดิตแบบเติมล่วงหน้าตั้งแต่ US$1.20/1K การค้นหา ไม่มีวันหมดอายุ ไม่ต้อง KYC — ไม่ต้องใช้บัตรประชาชน ไม่ต้องเซลฟี่ ไม่ต้องใช้เอกสาร จ่ายด้วยคริปโต
