๐Ÿ“—
smiley book
  • Smiley Books
  • AI
    • Readme
    • openai-whisper
      • ์ƒ˜ํ”Œ ์‹คํ–‰ํ•ด๋ณด๊ธฐ
      • GPU ์„œ๋ฒ„ ์ค€๋น„ํ•˜๊ธฐ
      • API๋กœ whisper๋ฅผ ์™ธ๋ถ€์— ์˜คํ”ˆํ•˜๊ธฐ
      • ํ”„๋กฌํ”„ํŠธ ์ง€์›
      • ์‹ค์‹œ๊ฐ„ message chat
      • ํ™”๋ฉด ์ด์˜๊ฒŒ ๋งŒ๋“ค๊ธฐ์™€ ๋กœ๊ทธ์ธ
      • ํŒŒ์ด์ฌ ๊ฐ€์ƒํ™˜๊ฒฝ
      • ์‹ค์‹œ๊ฐ„ voice chat
      • fine tunning(๋ฏธ์„ธ ์กฐ์ •) ์œผ๋กœ ์„ฑ๋Šฅ ์˜ฌ๋ฆฌ๊ธฐ
      • app์—์„œ api๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ์‹ค์‹œ๊ฐ„์œผ๋กœ ํ…์ŠคํŠธ๋กœ ๋ฐ”๊ฟ”๋ณด๊ธฐ
    • ollama - llm์„ ์‰ฝ๊ฒŒ ๋‚ด์ปด์—์„œ ์‹คํ–‰
      • ollama webui
      • ollama docker
    • stable diffusion
      • SDXL - text to image
      • SD-webui
    • ChatGPT
      • ๋‹ต๋ณ€์ด ๋Š๊ธธ๋•Œ
      • ์—ญํ• ์„ ์ •ํ•˜์ž
      • ๊ตฌ์ฒด์ ์ธ ์งˆ๋ฌธ
      • ๊ฒฐ๊ณผํ˜•ํƒœ๋ฅผ ์ง€์ •
      • ํ”„๋กฌํ”„ํŠธ๋ฅผ ์—ฌ๋Ÿฌ์ค„๋กœ ์‚ฌ์šฉํ•˜์ž.
      • ๋งˆํ‹ด ํŒŒ์šธ๋Ÿฌ ๊ธ€ ๋ฒˆ์—ญ๋ณธ
    • Prompt Engineering
    • Auto-GPT
    • Gemini
      • google ai studio
      • gemini-api
      • embedding guide
    • Huggingface
      • huggingface ์‚ฌ์šฉ๋ฒ•
      • huggingface nlp ๊ณต๋ถ€์ค‘
    • kaggle
      • download dataset
    • langchain
      • langchain์„ ๊ณต๋ถ€ํ•˜๋ฉฐ ์ •๋ฆฌ
      • basic
      • slackbot
      • rag
      • document-loader
      • website-loader
      • confluence
      • memory
      • function-call
      • langsmith
      • agent-toolkit
  • Ansible
    • templates vs files and jinja2
    • dynamic inventory
    • limit ์˜ต์…˜ ๊ฐ•์ œํ•˜๊ธฐ
    • limit ์‚ฌ์šฉํ›„ gather_fact ๋ฌธ์ œ
  • AWS
    • AWS CLI
    • EKS
      • cluster manage
      • ALB Controller
      • external-dns
      • fargate
    • ECR
    • S3
    • Certificate Manager
  • Azure
    • Azure AD OAuth Client Flow
  • Container
    • Registry
    • ๋นŒ๋“œ์‹œ์— env๊ฐ’ ์„ค์ •ํ•˜๊ธฐ
  • DB
    • PXC
      • Operator
      • PMM
      • ์‚ญ์ œ
      • GTID
      • Cross Site Replication
    • Mssql
    • Mysql
  • dotnet
    • Thread Pool
    • Connection Pool
    • Thread Pool2
  • Devops
    • Recommendation
  • GIT
    • Basic
    • Submodule
  • GitHub
    • Repository
    • GitHub Action
    • GitHub PR
    • Self Hosted Runner
    • GitHub Webhook
  • GitLab
    • CI/CD
    • CI/CD Advance
    • Ssl renew
    • CI/CD Pass env to other job
  • Go Lang
    • ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ๊ตฌ์ถ•
    • multi os binary build
    • kubectl๊ฐ™์€ cli๋งŒ๋“ค๊ธฐ
    • azure ad cli
    • embed static file
    • go study
      • pointer
      • module and package
      • string
      • struct
      • goroutine
  • Kubernetes
    • Kubernetes๋Š” ๋ฌด์—‡์ธ๊ฐ€
    • Tools
    • Install with kubespray
    • Kubernetes hardening guidance
    • 11 ways not to get hacked
    • ArgoCD
      • Install
      • CLI
      • Repository
      • Apps
      • AWS ALB ์‚ฌ์šฉ
      • Notification slack
      • Backup / DR
      • Ingress
      • 2021-11-16 Github error
      • Server Config
      • auth0 ์ธ์ฆ ์ถ”๊ฐ€(oauth,OIDC)
    • Extension
      • Longhorn pvc
      • External dns
      • Ingress nginx
      • Cert Manager
      • Kube prometheus
    • Helm
      • Subchart
      • Tip
    • Loki
    • Persistent Volume
    • TIP
      • Job
      • Pod
      • Log
  • KAFKA
    • raft
  • KVM
    • kvm cpu model
  • Linux
    • DNS Bind9
      • Cert-Manager
      • Certbot
      • Dynamic Update
      • Log
    • Export and variable
    • Grep ์‚ฌ์šฉ๋ฒ•
  • Modeling
    • C4 model introduce
    • Mermaid
    • reference
  • Monitoring
    • Readme
    • 0. What is Monitoring
    • 1. install prometheus and grafana
    • 2. grafana provisioning
    • 3. grafana dashboard
    • 4. grafana portable dashboard
    • 5. prometheus ui
    • 6. prometheus oauth2
    • Prometheus
      • Metric type
      • basic
      • rate vs irate
      • k8s-prometheus
    • Grafana
      • Expolorer
    • Node Exporter
      • advance
      • textfile collector
  • Motivation
    • 3 Simple Rule
  • OPENNEBULA
    • Install(ansible)
    • Install
    • Tip
    • Windows vm
  • Reading
    • comfort zone
    • ๋ฐฐ๋ ค
    • elon musk 6 rule for insane productivity
    • Feynman Technique
    • how to interview - elon musk
    • ๊ฒฝ์ฒญ
    • Readme
  • Redis
    • Install
    • Master-slave Architecture
    • Sentinel
    • Redis Cluster
    • Client programming c#
  • SEO
    • Readme
  • Security
    • criminalip.io
      • criminalip.io
  • Stock
    • robinhood-python
  • Terraform
    • moved block
    • output
  • vault
    • Readme
  • VS Code
    • dev container
    • dev container on remote server
  • Old fashione trend
    • curity
    • MAAS
      • Install maas
      • Manage maas
      • Tip
Powered by GitBook
On this page
  • WebBaseLoader
  • single website
  • Load multiple urls concurrently
  • xml parser
  • sitemap loader
  • basic sitemap loader
  • Add custom scraping rules
  • Test
  • Load sitemap
  • filter_url
  • ๊ธ€ ์ˆ˜์ •
  • ๋ฌธ์„œ๋ฅผ split ํ•˜๊ธฐ
  • vector store์— embeddingํ•ด์„œ ์ €์žฅ( cache also )
  • Chain (vector store์—์„œ ๊ฒ€์ƒ‰ํ•˜๊ณ  ๊ทธ๊ฑธ llm์œผ๋กœ ๋ณด๋‚ด๊ธฐ)
  • ์งˆ๋ฌธ์„ ํ•ด์„œ llm์— ๋ณด๋‚ด๊ธฐ

Was this helpful?

  1. AI
  2. langchain

website-loader

WebBaseLoader

single website

from langchain_community.document_loaders import WebBaseLoader
loader = WebBaseLoader("https://www.espn.com/")
data = loader.load()
data
loader = WebBaseLoader(["https://www.espn.com", "https://google.com"])
docs = loader.load()
docs

Load multiple urls concurrently

%pip install --user -Uq  nest_asyncio
# fixes a bug with asyncio and jupyter
import nest_asyncio

nest_asyncio.apply()
loader = WebBaseLoader(["https://www.espn.com/", "https://google.com"])
loader.requests_per_second = 1
docs = loader.aload()
docs

xml parser

loader = WebBaseLoader(
    "https://www.govinfo.gov/content/pkg/CFR-2018-title10-vol3/xml/CFR-2018-title10-vol3-sec431-86.xml"
)
loader.default_parser = "xml"
docs = loader.load()
docs

sitemap loader

basic sitemap loader

%pip install --user -Uq  nest_asyncio

# fixes a bug with asyncio and jupyter
import nest_asyncio

nest_asyncio.apply()
from langchain_community.document_loaders.sitemap import SitemapLoader
sitemap_loader = SitemapLoader(
    web_path="https://api.python.langchain.com/sitemap.xml")
docs = sitemap_loader.load()
docs[0]
## Filtering sitemap URLs
loader = SitemapLoader(
    web_path="https://api.python.langchain.com/sitemap.xml",
    filter_urls=["https://api.python.langchain.com/en/latest"],
)
documents = loader.load()
documents[0]

Add custom scraping rules

beautifulsoap4 ๋ฅผ ์‚ฌ์šฉ

%pip install --user  -Uq beautifulsoup4
from bs4 import BeautifulSoup


def remove_nav_and_header_elements(content: BeautifulSoup) -> str:
    # Find all 'nav' and 'header' elements in the BeautifulSoup object
    nav_elements = content.find_all("nav")
    header_elements = content.find_all("header")

    # Remove each 'nav' and 'header' element from the BeautifulSoup object
    for element in nav_elements + header_elements:
        element.decompose()

    return str(content.get_text())

loader = SitemapLoader(
    "https://api.python.langchain.com/sitemap.xml",
    filter_urls=["https://api.python.langchain.com/en/latest/"],
    parsing_function=remove_nav_and_header_elements,
)
docs = loader.load()
docs

Test

Load sitemap

sitemap_loader = SitemapLoader(
    web_path="https://api.python.langchain.com/sitemap.xml",
)
sitemap_loader.requests_per_second = 2

docs = sitemap_loader.load()
docs

filter_url

๋„ˆ๋ฌด๋งŽ์„๋•Œ๋Š” filter url์„ ์‚ฌ์šฉํ•˜์ž

sitemap_loader = SitemapLoader(
    web_path="https://beta.thisisgame.com/sitemap.xml",
    filter_urls=[
        "https://beta.thisisgame.com/articles/265823"
    ],
)

sitemap_loader.requests_per_second = 2

docs = sitemap_loader.load()
docs

[Document(page_content='๋ชจ๋ฐ”์ผ MMORPG โ€˜์•„์ผ€์ธโ€™ ์‹ ๊ทœ ์•„๋ฐ”ํƒ€ 6์ข… ๋ฐ ์‹ ๊ทœ ์—…๋ฐ์ดํŠธ ์ง„ํ–‰๊ฒŒ์ž„๊ณ„ ํ™”์ œ์ธ๊ฒŒ์ž„ ์ด์Šˆ์˜คํ”ผ๋‹ˆ์–ธ๊ธฐํš/ํŠน์ง‘์—ฐ์žฌ/์นดํˆฐ๊ฐค๋Ÿฌ๋ฆฌ์ปค๋ฎค๋‹ˆํ‹ฐ ๋กœ๊ทธ์ธ๋กœ๊ทธ์ธ์ž‘์„ฑ์ž: (์•ผํ† ๋กœ)|2015-09-25 ๋ชจ๋ฐ”์ผ MMORPG โ€˜์•„์ผ€์ธโ€™ ์‹ ๊ทœ ์•„๋ฐ”ํƒ€ 6์ข… ๋ฐ ์‹ ๊ทœ ์—…๋ฐ์ดํŠธ ์ง„ํ–‰ใˆœ์—”ํ„ฐ๋ฉ”์ดํŠธ(๋Œ€ํ‘œ ์ดํƒœํ˜„, //www.entermate.com)๊ฐ€ ์„œ๋น„์Šคํ•˜๊ณ  ํ”Œ๋ ˆ์ด์›์Šค ์ฃผ์‹ํšŒ์‚ฌ(๋Œ€ํ‘œ ๊น€๊ด‘์—ด)๊ฐ€ ๊ฐœ๋ฐœํ•œ ์‹ ์ž‘ ๋ชจ๋ฐ”์ผ MMORPG โ€˜์•„์ผ€์ธโ€™์ด ๋ฏผ์กฑ ๋Œ€๋ช…์ ˆ ์ถ”์„์„ ๋งž์•„ ์‹ ๊ทœ ์•„๋ฐ”ํƒ€ ๋ฐ ์ •์˜ˆ ๋˜์ „๊ณผ ํ•จ๊ป˜ํ•œ๊ฐ€์œ„ ๊ธฐ๋… ์ด๋ฒคํŠธ๋ฅผ 24์ผ(์ˆ˜) ํ•จ๊ป˜ ์—…๋ฐ์ดํŠธ ํ–ˆ๋‹ค๊ณ  ๋ฐํ˜”๋‹ค.๋จผ์ €, ์ŠคํŽ˜์…œ ์•„๋ฐ”ํƒ€ ํŒจํ‚ค์ง€๊ฐ€ ์‹ ๊ทœ๋กœ ์—…๋ฐ์ดํŠธ๋˜์—ˆ๋‹ค. ์ด๋ฒˆ์— ์ถ”๊ฐ€ ๋œ ์‹ ๊ทœ ์•„๋ฐ”ํƒ€๋Š” ์ฃผ์ˆ ์‹  ํŒํ† ๋ฅด,๋งŒ๋ ™ ํ† ๋ผ, ํŽ˜์–ด๋ฆฌ ๋‚˜์ดํŠธ, ํŒŒ๋ฉธ์ž ์•„์ผ€๋ก , ๋ ˆ๋“œํ›„๋“œ, ๋Š‘๋Œ€ ์ฃผ์ˆ ์‚ฌ ๋“ฑ ์ด 6์ข…์˜ ์•„๋ฐ”ํƒ€๊ฐ€ ์ถ”๊ฐ€๋˜์–ด ๊ฒŒ์ž„๋‚ด์—์„œ ๋งŒ๋‚˜๋ณผ ์ˆ˜ ์žˆ๋‹ค. ์ถ”๊ฐ€๋กœ, 50๋ ˆ๋ฒจ๋ถ€ํ„ฐ ์ž…์žฅ ๊ฐ€๋Šฅํ•œ ๋น„๋ฐ€์ „๋‹น ์ •์˜ˆ ๋˜์ „์ด ์ถ”๊ฐ€๋˜์–ด ๊ฐ•๋ ฅํ•œ ๋ฐ”๋‹ค๋ฅด ์žฅ๋น„ ์ œ์ž‘์ด ๊ฐ€๋Šฅํ•œ ํŠน์ˆ˜ ๋„์•ˆ์„ ํš๋“ํ•  ์ˆ˜ ์žˆ๋‹ค.๋˜ํ•œ, ๋ฏผ์กฑ ๋Œ€๋ช…์ ˆ ์ถ”์„์„ ๊ธฐ๋…ํ•˜์—ฌ ํ’์„ฑํ•œ ์ด๋ฒคํŠธ๋„ ํ•จ๊ป˜ ์ค€๋น„ํ–ˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ๋กœ, โ€˜์†กํŽธ ๋จน๊ฑฐ๋‚˜! ๋ฐ”๊พธ๊ฑฐ๋‚˜!โ€™ ์ด๋ฒคํŠธ๋ฅผ ์ง„ํ–‰ํ•œ๋‹ค. ์ด๋ฒคํŠธ ๊ธฐ๊ฐ„ ๋™์•ˆ ๋ชฌ์Šคํ„ฐ๋ฅผ ์ฒ˜์น˜ํ•˜๋ฉด ์†กํŽธ์•„์ดํ…œ์„ ํš๋“ํ•  ์ˆ˜ ์žˆ๊ณ , ํš๋“ํ•œ ์†กํŽธ์€ ์‚ฌ์šฉ ์‹œ ํŠน์ˆ˜ ๋ฒ„ํ”„ ํšจ๊ณผ๋ฅผ ์ œ๊ณตํ•˜๊ฑฐ๋‚˜, 50๊ฐœ๋ฅผ ๋ชจ์•„ ์ด๋ฒคํŠธ NPC์—๊ฒŒ ๊ตํ™˜ํ•˜์—ฌ ๊ณจ๋“œ ๊ตํ™˜์ด ๊ฐ€๋Šฅํ•œ ์‘ฅ์†กํŽธ์œผ๋กœ ๊ตํ™˜ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋‘ ๋ฒˆ์งธ๋กœ, ์ถ”์„ ์ด๋ฒคํŠธ ๊ธฐ๊ฐ„ ๋™์•ˆ ๊ณจ๋“œ 2๋ฐฐ ํš๋“, ์•„์ดํ…œ 2๋ฐฐ ํš๋“ ๋“ฑ์˜ ํŠน๋ณ„ํ•œ ๋ฒ„ํ”„๋ฅผ ์ œ๊ณตํ•˜๋Š” ์ด๋ฒคํŠธ๋„ ํ•จ๊ป˜ ์ง„ํ–‰ํ•œ๋‹ค.์•„์ผ€์ธ์€ ์ง€๋‚œ 9์›” 2์ผ ์ถœ์‹œ ๋œ ์‹ ์ž‘ ๋ชจ๋ฐ”์ผ MMORPG๋กœ, ๋ฆฌ๋‹ˆ์ง€, ๋ฐ”๋žŒ์˜ ๋‚˜๋ผ ๋“ฑ 1์„ธ๋Œ€ PC MMORPG์˜ ํ–ฅ์ˆ˜๋ฅผ ๋ถˆ๋Ÿฌ์ผ์œผํ‚ค๋Š” ๋‹ค์–‘ํ•œ ์š”์†Œ๋ฅผ ํฌํ•จํ•œ ๊ฒŒ์ž„์ด๋‹ค. ์ถœ์‹œ ์ดˆ๋ฐ˜ ํ‹ฐ์Šคํ† ์–ด ์ธ๊ธฐ ๊ฒŒ์ž„ 1๋“ฑ, ๊ตฌ๊ธ€ ํ”Œ๋ ˆ์ด ์Šคํ† ์–ด ์ธ๊ธฐ 3๋“ฑ ๋ฐ ๋งค์ถœ ์ˆœ์œ„ 20์œ„๊ถŒ์— ์ง„์ž…ํ•˜๋Š” ๋“ฑ ์ƒ์Šน์„ธ๋ฅผ ๋ณด์ด๋ฉฐ, ํ˜„์žฌ๋„ ๊ทธ ์ธ๊ธฐ๋ฅผ ๊พธ์ค€ํžˆ ์ด์–ด๊ฐ€๊ณ  ์žˆ๋‹ค.ํ•œํŽธ, โ€˜์•„์ผ€์ธโ€™์€ ๊ตฌ๊ธ€ ํ”Œ๋ ˆ์ด ์Šคํ† ์–ด, ๋„ค์ด๋ฒ„ ์•ฑ์Šคํ† ์–ด, ์ดํ†ต\xa03์‚ฌ์˜ ํ†ตํ•ฉ ๋งˆ์ผ“ ์›์Šคํ† ์–ด\xa0๋“ฑ์„ ํ†ตํ•ด์„œ ๋ฌด๋ฃŒ๋กœ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๊ฒŒ์ž„๊ณผ ๊ด€๋ จ๋œ\xa0๋ณด๋‹ค ์ž์„ธํ•œ ์ •๋ณด๋Š” ๊ณต์‹ ์ปค๋ฎค๋‹ˆํ‹ฐ(//cafe.naver.com/arcanemobile)๋ฅผ ํ†ตํ•ด์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. \xa0์ด ๊ธฐ์‚ฌ๊ฐ€ ๋งˆ์Œ์— ๋“œ์…จ๋‹ค๋ฉด ๊ณต์œ ํ•ด์ฃผ์„ธ์š”THISISGAME์ „์ฒด ์‚ฌ์ดํŠธ๋งต์ œํœด์‚ฌ ์ •๋ณด์œ ํ†ต ์ •๋ณดTIG ์†Œ๊ฐœ์ด์šฉ์•ฝ๊ด€๊ฐœ์ธ์ •๋ณด ์ทจ๊ธ‰๊ด‘๊ณ  ๋ฐ ์ œํœด ๋ฌธ์˜์ œ๋ณดํ•˜๊ธฐ์งˆ๋ฌธ ๋ฐ ๊ฑด์˜ใˆœ๋””์Šค์ด์ฆˆ๊ฒŒ์ž„๋‹ท์ปด | ๋“ฑ๋ก๋ฒˆํ˜ธ: ์„œ์šธ ์•„ 00368 | ๋“ฑ๋ก์ผ์ž: 2007๋…„ 5์›” 4์ผ | ์ œํ˜ธ: ๋””์Šค์ด์ฆˆ๊ฒŒ์ž„ | ๋ฐœํ–‰์ธ: ์ž„์ƒํ›ˆ | ํŽธ์ง‘์ธ: ์ •์šฐ์ฒ ์ฃผ์†Œ: ์„œ์šธํŠน๋ณ„์‹œ ๊ฐ•๋‚จ๊ตฌ ํ…Œํ—ค๋ž€๋กœ78๊ธธ 12, MSA๋นŒ๋”ฉ 12์ธต | ๋ฐœํ–‰์ผ์ž: 2005๋…„ 3์›” 14์ผ | ๋Œ€ํ‘œ๋ฒˆํ˜ธ: 02)568-7917 | ์ฒญ์†Œ๋…„๋ณดํ˜ธ์ฑ…์ž„์ž: ๊น€๋ฌด๊ฒธ๋””์Šค์ด์ฆˆ๊ฒŒ์ž„๋‹ท์ปด์˜ ๋ชจ๋“  ์ฝ˜ํ…์ธ ๋Š” ์ €์ž‘๊ถŒ๋ฒ•์˜ ๋ณดํ˜ธ๋ฅผ ๋ฐ›์œผ๋ฉฐ, ๋ฌด๋‹จ ์ „์žฌ, ๋ณต์‚ฌ, ๋ฐฐํฌ๋ฅผ ๊ธˆํ•ฉ๋‹ˆ๋‹ค.ยฉ 2024thisisgame.com', metadata={'source': 'https://beta.thisisgame.com/articles/265823', 'loc': 'https://beta.thisisgame.com/articles/265823', 'lastmod': '2015-09-25T01:34:31.000Z', 'changefreq': 'monthly', 'priority': '0.7'})]

์‚ฌ์ดํŠธ๋งต์—์„œ ์ฝ์–ด์„œ ๊ฐ ํŽ˜์ด์ง€๋ฅผ ์ „๋ถ€๋‹ค ๋ฌธ์„œ๋กœ ๊ฐ€์ ธ์˜จ๋‹ค.

๊ธ€ ์ˆ˜์ •

์ด ๋ฌธ์„œ ๋‚ด์šฉ์ค‘ ๋บ„๊ฑด ๋นผ์ž.

from bs4 import BeautifulSoup

def parse_page(soup):
    header = soup.find("header")
    footer = soup.find("footer")
    if header:
        header.decompose()
    if footer:
        footer.decompose()
    return (
        str(soup.get_text())
        .replace("\n", " ")
        .replace("\xa0", " ")
        .replace("์ง„ํ–‰๊ฒŒ์ž„๊ณ„ ํ™”์ œ์ธ๊ฒŒ์ž„ ์ด์Šˆ์˜คํ”ผ๋‹ˆ์–ธ๊ธฐํš/ํŠน์ง‘์—ฐ์žฌ/์นดํˆฐ๊ฐค๋Ÿฌ๋ฆฌ์ปค๋ฎค๋‹ˆํ‹ฐ ๋กœ๊ทธ์ธ๋กœ๊ทธ์ธ","")
    )
sitemap_loader = SitemapLoader(
    web_path="https://beta.thisisgame.com/sitemap.xml",
    filter_urls=[
        "https://beta.thisisgame.com/articles/265823"
    ],
    parsing_function=parse_page,
)

sitemap_loader.requests_per_second = 2

docs = sitemap_loader.load()
docs[0]

Document(page_content='๋ชจ๋ฐ”์ผ MMORPG โ€˜์•„์ผ€์ธโ€™ ์‹ ๊ทœ ์•„๋ฐ”ํƒ€ 6์ข… ๋ฐ ์‹ ๊ทœ ์—…๋ฐ์ดํŠธ ์ง„ํ–‰๊ฒŒ์ž„๊ณ„ ํ™”์ œ์ธ๊ฒŒ์ž„ ์ด์Šˆ์˜คํ”ผ๋‹ˆ์–ธ๊ธฐํš/ํŠน์ง‘์—ฐ์žฌ/์นดํˆฐ๊ฐค๋Ÿฌ๋ฆฌ์ปค๋ฎค๋‹ˆํ‹ฐ ๋กœ๊ทธ์ธ๋กœ๊ทธ์ธ์ž‘์„ฑ์ž: (์•ผํ† ๋กœ)|2015-09-25 ๋ชจ๋ฐ”์ผ MMORPG โ€˜์•„์ผ€์ธโ€™ ์‹ ๊ทœ ์•„๋ฐ”ํƒ€ 6์ข… ๋ฐ ์‹ ๊ทœ ์—…๋ฐ์ดํŠธ ์ง„ํ–‰ใˆœ์—”ํ„ฐ๋ฉ”์ดํŠธ(๋Œ€ํ‘œ ์ดํƒœํ˜„, //www.entermate.com)๊ฐ€ ์„œ๋น„์Šคํ•˜๊ณ  ํ”Œ๋ ˆ์ด์›์Šค ์ฃผ์‹ํšŒ์‚ฌ(๋Œ€ํ‘œ ๊น€๊ด‘์—ด)๊ฐ€ ๊ฐœ๋ฐœํ•œ ์‹ ์ž‘ ๋ชจ๋ฐ”์ผ MMORPG โ€˜์•„์ผ€์ธโ€™์ด ๋ฏผ์กฑ ๋Œ€๋ช…์ ˆ ์ถ”์„์„ ๋งž์•„ ์‹ ๊ทœ ์•„๋ฐ”ํƒ€ ๋ฐ ์ •์˜ˆ ๋˜์ „๊ณผ ํ•จ๊ป˜ํ•œ๊ฐ€์œ„ ๊ธฐ๋… ์ด๋ฒคํŠธ๋ฅผ 24์ผ(์ˆ˜) ํ•จ๊ป˜ ์—…๋ฐ์ดํŠธ ํ–ˆ๋‹ค๊ณ  ๋ฐํ˜”๋‹ค.๋จผ์ €, ์ŠคํŽ˜์…œ ์•„๋ฐ”ํƒ€ ํŒจํ‚ค์ง€๊ฐ€ ์‹ ๊ทœ๋กœ ์—…๋ฐ์ดํŠธ๋˜์—ˆ๋‹ค. ์ด๋ฒˆ์— ์ถ”๊ฐ€ ๋œ ์‹ ๊ทœ ์•„๋ฐ”ํƒ€๋Š” ์ฃผ์ˆ ์‹  ํŒํ† ๋ฅด,๋งŒ๋ ™ ํ† ๋ผ, ํŽ˜์–ด๋ฆฌ ๋‚˜์ดํŠธ, ํŒŒ๋ฉธ์ž ์•„์ผ€๋ก , ๋ ˆ๋“œํ›„๋“œ, ๋Š‘๋Œ€ ์ฃผ์ˆ ์‚ฌ ๋“ฑ ์ด 6์ข…์˜ ์•„๋ฐ”ํƒ€๊ฐ€ ์ถ”๊ฐ€๋˜์–ด ๊ฒŒ์ž„๋‚ด์—์„œ ๋งŒ๋‚˜๋ณผ ์ˆ˜ ์žˆ๋‹ค. ์ถ”๊ฐ€๋กœ, 50๋ ˆ๋ฒจ๋ถ€ํ„ฐ ์ž…์žฅ ๊ฐ€๋Šฅํ•œ ๋น„๋ฐ€์ „๋‹น ์ •์˜ˆ ๋˜์ „์ด ์ถ”๊ฐ€๋˜์–ด ๊ฐ•๋ ฅํ•œ ๋ฐ”๋‹ค๋ฅด ์žฅ๋น„ ์ œ์ž‘์ด ๊ฐ€๋Šฅํ•œ ํŠน์ˆ˜ ๋„์•ˆ์„ ํš๋“ํ•  ์ˆ˜ ์žˆ๋‹ค.๋˜ํ•œ, ๋ฏผ์กฑ ๋Œ€๋ช…์ ˆ ์ถ”์„์„ ๊ธฐ๋…ํ•˜์—ฌ ํ’์„ฑํ•œ ์ด๋ฒคํŠธ๋„ ํ•จ๊ป˜ ์ค€๋น„ํ–ˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ๋กœ, โ€˜์†กํŽธ ๋จน๊ฑฐ๋‚˜! ๋ฐ”๊พธ๊ฑฐ๋‚˜!โ€™ ์ด๋ฒคํŠธ๋ฅผ ์ง„ํ–‰ํ•œ๋‹ค. ์ด๋ฒคํŠธ ๊ธฐ๊ฐ„ ๋™์•ˆ ๋ชฌ์Šคํ„ฐ๋ฅผ ์ฒ˜์น˜ํ•˜๋ฉด ์†กํŽธ์•„์ดํ…œ์„ ํš๋“ํ•  ์ˆ˜ ์žˆ๊ณ , ํš๋“ํ•œ ์†กํŽธ์€ ์‚ฌ์šฉ ์‹œ ํŠน์ˆ˜ ๋ฒ„ํ”„ ํšจ๊ณผ๋ฅผ ์ œ๊ณตํ•˜๊ฑฐ๋‚˜, 50๊ฐœ๋ฅผ ๋ชจ์•„ ์ด๋ฒคํŠธ NPC์—๊ฒŒ ๊ตํ™˜ํ•˜์—ฌ ๊ณจ๋“œ ๊ตํ™˜์ด ๊ฐ€๋Šฅํ•œ ์‘ฅ์†กํŽธ์œผ๋กœ ๊ตํ™˜ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋‘ ๋ฒˆ์งธ๋กœ, ์ถ”์„ ์ด๋ฒคํŠธ ๊ธฐ๊ฐ„ ๋™์•ˆ ๊ณจ๋“œ 2๋ฐฐ ํš๋“, ์•„์ดํ…œ 2๋ฐฐ ํš๋“ ๋“ฑ์˜ ํŠน๋ณ„ํ•œ ๋ฒ„ํ”„๋ฅผ ์ œ๊ณตํ•˜๋Š” ์ด๋ฒคํŠธ๋„ ํ•จ๊ป˜ ์ง„ํ–‰ํ•œ๋‹ค.์•„์ผ€์ธ์€ ์ง€๋‚œ 9์›” 2์ผ ์ถœ์‹œ ๋œ ์‹ ์ž‘ ๋ชจ๋ฐ”์ผ MMORPG๋กœ, ๋ฆฌ๋‹ˆ์ง€, ๋ฐ”๋žŒ์˜ ๋‚˜๋ผ ๋“ฑ 1์„ธ๋Œ€ PC MMORPG์˜ ํ–ฅ์ˆ˜๋ฅผ ๋ถˆ๋Ÿฌ์ผ์œผํ‚ค๋Š” ๋‹ค์–‘ํ•œ ์š”์†Œ๋ฅผ ํฌํ•จํ•œ ๊ฒŒ์ž„์ด๋‹ค. ์ถœ์‹œ ์ดˆ๋ฐ˜ ํ‹ฐ์Šคํ† ์–ด ์ธ๊ธฐ ๊ฒŒ์ž„ 1๋“ฑ, ๊ตฌ๊ธ€ ํ”Œ๋ ˆ์ด ์Šคํ† ์–ด ์ธ๊ธฐ 3๋“ฑ ๋ฐ ๋งค์ถœ ์ˆœ์œ„ 20์œ„๊ถŒ์— ์ง„์ž…ํ•˜๋Š” ๋“ฑ ์ƒ์Šน์„ธ๋ฅผ ๋ณด์ด๋ฉฐ, ํ˜„์žฌ๋„ ๊ทธ ์ธ๊ธฐ๋ฅผ ๊พธ์ค€ํžˆ ์ด์–ด๊ฐ€๊ณ  ์žˆ๋‹ค.ํ•œํŽธ, โ€˜์•„์ผ€์ธโ€™์€ ๊ตฌ๊ธ€ ํ”Œ๋ ˆ์ด ์Šคํ† ์–ด, ๋„ค์ด๋ฒ„ ์•ฑ์Šคํ† ์–ด, ์ดํ†ต ์‚ฌ์˜ ํ†ตํ•ฉ ๋งˆ์ผ“ ์›์Šคํ† ์–ด\xa0๋“ฑ์„ ํ†ตํ•ด์„œ ๋ฌด๋ฃŒ๋กœ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๊ฒŒ์ž„๊ณผ ๊ด€๋ จ๋œ\xa0๋ณด๋‹ค ์ž์„ธํ•œ ์ •๋ณด๋Š” ๊ณต์‹ ์ปค๋ฎค๋‹ˆํ‹ฐ(//cafe.naver.com/arcanemobile)๋ฅผ ํ†ตํ•ด์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. \xa0์ด ๊ธฐ์‚ฌ๊ฐ€ ๋งˆ์Œ์— ๋“œ์…จ๋‹ค๋ฉด ๊ณต์œ ํ•ด์ฃผ์„ธ์š”', metadata={'source': 'https://beta.thisisgame.com/articles/265823', 'loc': 'https://beta.thisisgame.com/articles/265823', 'lastmod': '2015-09-25T01:34:31.000Z', 'changefreq': 'monthly', 'priority': '0.7'})

Document(page_content='๋ชจ๋ฐ”์ผ MMORPG โ€˜์•„์ผ€์ธโ€™ ์‹ ๊ทœ ์•„๋ฐ”ํƒ€ 6์ข… ๋ฐ ์‹ ๊ทœ ์—…๋ฐ์ดํŠธ ์ง„ํ–‰๊ฒŒ์ž„๊ณ„ ํ™”์ œ์ธ๊ฒŒ์ž„ ์ด์Šˆ์˜คํ”ผ๋‹ˆ์–ธ๊ธฐํš/ํŠน์ง‘์—ฐ์žฌ/์นดํˆฐ๊ฐค๋Ÿฌ๋ฆฌ์ปค๋ฎค๋‹ˆํ‹ฐ ๋กœ๊ทธ์ธ๋กœ๊ทธ์ธ์ž‘์„ฑ์ž: (์•ผํ† ๋กœ)|2015-09-25 ๋ชจ๋ฐ”์ผ MMORPG โ€˜์•„์ผ€์ธโ€™ ์‹ ๊ทœ ์•„๋ฐ”ํƒ€ 6์ข… ๋ฐ ์‹ ๊ทœ ์—…๋ฐ์ดํŠธ ์ง„ํ–‰ใˆœ์—”ํ„ฐ๋ฉ”์ดํŠธ(๋Œ€ํ‘œ ์ดํƒœํ˜„, //www.entermate.com)๊ฐ€ ์„œ๋น„์Šคํ•˜๊ณ  ํ”Œ๋ ˆ์ด์›์Šค ์ฃผ์‹ํšŒ์‚ฌ(๋Œ€ํ‘œ ๊น€๊ด‘์—ด)๊ฐ€ ๊ฐœ๋ฐœํ•œ ์‹ ์ž‘ ๋ชจ๋ฐ”์ผ MMORPG โ€˜์•„์ผ€์ธโ€™์ด ๋ฏผ์กฑ ๋Œ€๋ช…์ ˆ ์ถ”์„์„ ๋งž์•„ ์‹ ๊ทœ ์•„๋ฐ”ํƒ€ ๋ฐ ์ •์˜ˆ ๋˜์ „๊ณผ ํ•จ๊ป˜ํ•œ๊ฐ€์œ„ ๊ธฐ๋… ์ด๋ฒคํŠธ๋ฅผ 24์ผ(์ˆ˜) ํ•จ๊ป˜ ์—…๋ฐ์ดํŠธ ํ–ˆ๋‹ค๊ณ  ๋ฐํ˜”๋‹ค.๋จผ์ €, ์ŠคํŽ˜์…œ ์•„๋ฐ”ํƒ€ ํŒจํ‚ค์ง€๊ฐ€ ์‹ ๊ทœ๋กœ ์—…๋ฐ์ดํŠธ๋˜์—ˆ๋‹ค. ์ด๋ฒˆ์— ์ถ”๊ฐ€ ๋œ ์‹ ๊ทœ ์•„๋ฐ”ํƒ€๋Š” ์ฃผ์ˆ ์‹  ํŒํ† ๋ฅด,๋งŒ๋ ™ ํ† ๋ผ, ํŽ˜์–ด๋ฆฌ ๋‚˜์ดํŠธ, ํŒŒ๋ฉธ์ž ์•„์ผ€๋ก , ๋ ˆ๋“œํ›„๋“œ, ๋Š‘๋Œ€ ์ฃผ์ˆ ์‚ฌ ๋“ฑ ์ด 6์ข…์˜ ์•„๋ฐ”ํƒ€๊ฐ€ ์ถ”๊ฐ€๋˜์–ด ๊ฒŒ์ž„๋‚ด์—์„œ ๋งŒ๋‚˜๋ณผ ์ˆ˜ ์žˆ๋‹ค. ์ถ”๊ฐ€๋กœ, 50๋ ˆ๋ฒจ๋ถ€ํ„ฐ ์ž…์žฅ ๊ฐ€๋Šฅํ•œ ๋น„๋ฐ€์ „๋‹น ์ •์˜ˆ ๋˜์ „์ด ์ถ”๊ฐ€๋˜์–ด ๊ฐ•๋ ฅํ•œ ๋ฐ”๋‹ค๋ฅด ์žฅ๋น„ ์ œ์ž‘์ด ๊ฐ€๋Šฅํ•œ ํŠน์ˆ˜ ๋„์•ˆ์„ ํš๋“ํ•  ์ˆ˜ ์žˆ๋‹ค.๋˜ํ•œ, ๋ฏผ์กฑ ๋Œ€๋ช…์ ˆ ์ถ”์„์„ ๊ธฐ๋…ํ•˜์—ฌ ํ’์„ฑํ•œ ์ด๋ฒคํŠธ๋„ ํ•จ๊ป˜ ์ค€๋น„ํ–ˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ๋กœ, โ€˜์†กํŽธ ๋จน๊ฑฐ๋‚˜! ๋ฐ”๊พธ๊ฑฐ๋‚˜!โ€™ ์ด๋ฒคํŠธ๋ฅผ ์ง„ํ–‰ํ•œ๋‹ค. ์ด๋ฒคํŠธ ๊ธฐ๊ฐ„ ๋™์•ˆ ๋ชฌ์Šคํ„ฐ๋ฅผ ์ฒ˜์น˜ํ•˜๋ฉด ์†กํŽธ์•„์ดํ…œ์„ ํš๋“ํ•  ์ˆ˜ ์žˆ๊ณ , ํš๋“ํ•œ ์†กํŽธ์€ ์‚ฌ์šฉ ์‹œ ํŠน์ˆ˜ ๋ฒ„ํ”„ ํšจ๊ณผ๋ฅผ ์ œ๊ณตํ•˜๊ฑฐ๋‚˜, 50๊ฐœ๋ฅผ ๋ชจ์•„ ์ด๋ฒคํŠธ NPC์—๊ฒŒ ๊ตํ™˜ํ•˜์—ฌ ๊ณจ๋“œ ๊ตํ™˜์ด ๊ฐ€๋Šฅํ•œ ์‘ฅ์†กํŽธ์œผ๋กœ ๊ตํ™˜ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋‘ ๋ฒˆ์งธ๋กœ, ์ถ”์„ ์ด๋ฒคํŠธ ๊ธฐ๊ฐ„ ๋™์•ˆ ๊ณจ๋“œ 2๋ฐฐ ํš๋“, ์•„์ดํ…œ 2๋ฐฐ ํš๋“ ๋“ฑ์˜ ํŠน๋ณ„ํ•œ ๋ฒ„ํ”„๋ฅผ ์ œ๊ณตํ•˜๋Š” ์ด๋ฒคํŠธ๋„ ํ•จ๊ป˜ ์ง„ํ–‰ํ•œ๋‹ค.์•„์ผ€์ธ์€ ์ง€๋‚œ 9์›” 2์ผ ์ถœ์‹œ ๋œ ์‹ ์ž‘ ๋ชจ๋ฐ”์ผ MMORPG๋กœ, ๋ฆฌ๋‹ˆ์ง€, ๋ฐ”๋žŒ์˜ ๋‚˜๋ผ ๋“ฑ 1์„ธ๋Œ€ PC MMORPG์˜ ํ–ฅ์ˆ˜๋ฅผ ๋ถˆ๋Ÿฌ์ผ์œผํ‚ค๋Š” ๋‹ค์–‘ํ•œ ์š”์†Œ๋ฅผ ํฌํ•จํ•œ ๊ฒŒ์ž„์ด๋‹ค. ์ถœ์‹œ ์ดˆ๋ฐ˜ ํ‹ฐ์Šคํ† ์–ด ์ธ๊ธฐ ๊ฒŒ์ž„ 1๋“ฑ, ๊ตฌ๊ธ€ ํ”Œ๋ ˆ์ด ์Šคํ† ์–ด ์ธ๊ธฐ 3๋“ฑ ๋ฐ ๋งค์ถœ ์ˆœ์œ„ 20์œ„๊ถŒ์— ์ง„์ž…ํ•˜๋Š” ๋“ฑ ์ƒ์Šน์„ธ๋ฅผ ๋ณด์ด๋ฉฐ, ํ˜„์žฌ๋„ ๊ทธ ์ธ๊ธฐ๋ฅผ ๊พธ์ค€ํžˆ ์ด์–ด๊ฐ€๊ณ  ์žˆ๋‹ค.ํ•œํŽธ, โ€˜์•„์ผ€์ธโ€™์€ ๊ตฌ๊ธ€ ํ”Œ๋ ˆ์ด ์Šคํ† ์–ด, ๋„ค์ด๋ฒ„ ์•ฑ์Šคํ† ์–ด, ์ดํ†ต 3์‚ฌ์˜ ํ†ตํ•ฉ ๋งˆ์ผ“ ์›์Šคํ† ์–ด ๋“ฑ์„ ํ†ตํ•ด์„œ ๋ฌด๋ฃŒ๋กœ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๊ฒŒ์ž„๊ณผ ๊ด€๋ จ๋œ ๋ณด๋‹ค ์ž์„ธํ•œ ์ •๋ณด๋Š” ๊ณต์‹ ์ปค๋ฎค๋‹ˆํ‹ฐ(//cafe.naver.com/arcanemobile)๋ฅผ ํ†ตํ•ด์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด ๊ธฐ์‚ฌ๊ฐ€ ๋งˆ์Œ์— ๋“œ์…จ๋‹ค๋ฉด ๊ณต์œ ํ•ด์ฃผ์„ธ์š”', metadata={'source': 'https://beta.thisisgame.com/articles/265823', 'loc': 'https://beta.thisisgame.com/articles/265823', 'lastmod': '2015-09-25T01:34:31.000Z', 'changefreq': 'monthly', 'priority': '0.7'})

Document(page_content='๋ชจ๋ฐ”์ผ MMORPG โ€˜์•„์ผ€์ธโ€™ ์‹ ๊ทœ ์•„๋ฐ”ํƒ€ 6์ข… ๋ฐ ์‹ ๊ทœ ์—…๋ฐ์ดํŠธ ์ž‘์„ฑ์ž: (์•ผํ† ๋กœ)|2015-09-25 ๋ชจ๋ฐ”์ผ MMORPG โ€˜์•„์ผ€์ธโ€™ ์‹ ๊ทœ ์•„๋ฐ”ํƒ€ 6์ข… ๋ฐ ์‹ ๊ทœ ์—…๋ฐ์ดํŠธ ์ง„ํ–‰ใˆœ์—”ํ„ฐ๋ฉ”์ดํŠธ(๋Œ€ํ‘œ ์ดํƒœํ˜„, //www.entermate.com)๊ฐ€ ์„œ๋น„์Šคํ•˜๊ณ  ํ”Œ๋ ˆ์ด์›์Šค ์ฃผ์‹ํšŒ์‚ฌ(๋Œ€ํ‘œ ๊น€๊ด‘์—ด)๊ฐ€ ๊ฐœ๋ฐœํ•œ ์‹ ์ž‘ ๋ชจ๋ฐ”์ผ MMORPG โ€˜์•„์ผ€์ธโ€™์ด ๋ฏผ์กฑ ๋Œ€๋ช…์ ˆ ์ถ”์„์„ ๋งž์•„ ์‹ ๊ทœ ์•„๋ฐ”ํƒ€ ๋ฐ ์ •์˜ˆ ๋˜์ „๊ณผ ํ•จ๊ป˜ํ•œ๊ฐ€์œ„ ๊ธฐ๋… ์ด๋ฒคํŠธ๋ฅผ 24์ผ(์ˆ˜) ํ•จ๊ป˜ ์—…๋ฐ์ดํŠธ ํ–ˆ๋‹ค๊ณ  ๋ฐํ˜”๋‹ค.๋จผ์ €, ์ŠคํŽ˜์…œ ์•„๋ฐ”ํƒ€ ํŒจํ‚ค์ง€๊ฐ€ ์‹ ๊ทœ๋กœ ์—…๋ฐ์ดํŠธ๋˜์—ˆ๋‹ค. ์ด๋ฒˆ์— ์ถ”๊ฐ€ ๋œ ์‹ ๊ทœ ์•„๋ฐ”ํƒ€๋Š” ์ฃผ์ˆ ์‹  ํŒํ† ๋ฅด,๋งŒ๋ ™ ํ† ๋ผ, ํŽ˜์–ด๋ฆฌ ๋‚˜์ดํŠธ, ํŒŒ๋ฉธ์ž ์•„์ผ€๋ก , ๋ ˆ๋“œํ›„๋“œ, ๋Š‘๋Œ€ ์ฃผ์ˆ ์‚ฌ ๋“ฑ ์ด 6์ข…์˜ ์•„๋ฐ”ํƒ€๊ฐ€ ์ถ”๊ฐ€๋˜์–ด ๊ฒŒ์ž„๋‚ด์—์„œ ๋งŒ๋‚˜๋ณผ ์ˆ˜ ์žˆ๋‹ค. ์ถ”๊ฐ€๋กœ, 50๋ ˆ๋ฒจ๋ถ€ํ„ฐ ์ž…์žฅ ๊ฐ€๋Šฅํ•œ ๋น„๋ฐ€์ „๋‹น ์ •์˜ˆ ๋˜์ „์ด ์ถ”๊ฐ€๋˜์–ด ๊ฐ•๋ ฅํ•œ ๋ฐ”๋‹ค๋ฅด ์žฅ๋น„ ์ œ์ž‘์ด ๊ฐ€๋Šฅํ•œ ํŠน์ˆ˜ ๋„์•ˆ์„ ํš๋“ํ•  ์ˆ˜ ์žˆ๋‹ค.๋˜ํ•œ, ๋ฏผ์กฑ ๋Œ€๋ช…์ ˆ ์ถ”์„์„ ๊ธฐ๋…ํ•˜์—ฌ ํ’์„ฑํ•œ ์ด๋ฒคํŠธ๋„ ํ•จ๊ป˜ ์ค€๋น„ํ–ˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ๋กœ, โ€˜์†กํŽธ ๋จน๊ฑฐ๋‚˜! ๋ฐ”๊พธ๊ฑฐ๋‚˜!โ€™ ์ด๋ฒคํŠธ๋ฅผ ์ง„ํ–‰ํ•œ๋‹ค. ์ด๋ฒคํŠธ ๊ธฐ๊ฐ„ ๋™์•ˆ ๋ชฌ์Šคํ„ฐ๋ฅผ ์ฒ˜์น˜ํ•˜๋ฉด ์†กํŽธ์•„์ดํ…œ์„ ํš๋“ํ•  ์ˆ˜ ์žˆ๊ณ , ํš๋“ํ•œ ์†กํŽธ์€ ์‚ฌ์šฉ ์‹œ ํŠน์ˆ˜ ๋ฒ„ํ”„ ํšจ๊ณผ๋ฅผ ์ œ๊ณตํ•˜๊ฑฐ๋‚˜, 50๊ฐœ๋ฅผ ๋ชจ์•„ ์ด๋ฒคํŠธ NPC์—๊ฒŒ ๊ตํ™˜ํ•˜์—ฌ ๊ณจ๋“œ ๊ตํ™˜์ด ๊ฐ€๋Šฅํ•œ ์‘ฅ์†กํŽธ์œผ๋กœ ๊ตํ™˜ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋‘ ๋ฒˆ์งธ๋กœ, ์ถ”์„ ์ด๋ฒคํŠธ ๊ธฐ๊ฐ„ ๋™์•ˆ ๊ณจ๋“œ 2๋ฐฐ ํš๋“, ์•„์ดํ…œ 2๋ฐฐ ํš๋“ ๋“ฑ์˜ ํŠน๋ณ„ํ•œ ๋ฒ„ํ”„๋ฅผ ์ œ๊ณตํ•˜๋Š” ์ด๋ฒคํŠธ๋„ ํ•จ๊ป˜ ์ง„ํ–‰ํ•œ๋‹ค.์•„์ผ€์ธ์€ ์ง€๋‚œ 9์›” 2์ผ ์ถœ์‹œ ๋œ ์‹ ์ž‘ ๋ชจ๋ฐ”์ผ MMORPG๋กœ, ๋ฆฌ๋‹ˆ์ง€, ๋ฐ”๋žŒ์˜ ๋‚˜๋ผ ๋“ฑ 1์„ธ๋Œ€ PC MMORPG์˜ ํ–ฅ์ˆ˜๋ฅผ ๋ถˆ๋Ÿฌ์ผ์œผํ‚ค๋Š” ๋‹ค์–‘ํ•œ ์š”์†Œ๋ฅผ ํฌํ•จํ•œ ๊ฒŒ์ž„์ด๋‹ค. ์ถœ์‹œ ์ดˆ๋ฐ˜ ํ‹ฐ์Šคํ† ์–ด ์ธ๊ธฐ ๊ฒŒ์ž„ 1๋“ฑ, ๊ตฌ๊ธ€ ํ”Œ๋ ˆ์ด ์Šคํ† ์–ด ์ธ๊ธฐ 3๋“ฑ ๋ฐ ๋งค์ถœ ์ˆœ์œ„ 20์œ„๊ถŒ์— ์ง„์ž…ํ•˜๋Š” ๋“ฑ ์ƒ์Šน์„ธ๋ฅผ ๋ณด์ด๋ฉฐ, ํ˜„์žฌ๋„ ๊ทธ ์ธ๊ธฐ๋ฅผ ๊พธ์ค€ํžˆ ์ด์–ด๊ฐ€๊ณ  ์žˆ๋‹ค.ํ•œํŽธ, โ€˜์•„์ผ€์ธโ€™์€ ๊ตฌ๊ธ€ ํ”Œ๋ ˆ์ด ์Šคํ† ์–ด, ๋„ค์ด๋ฒ„ ์•ฑ์Šคํ† ์–ด, ์ดํ†ต 3์‚ฌ์˜ ํ†ตํ•ฉ ๋งˆ์ผ“ ์›์Šคํ† ์–ด ๋“ฑ์„ ํ†ตํ•ด์„œ ๋ฌด๋ฃŒ๋กœ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๊ฒŒ์ž„๊ณผ ๊ด€๋ จ๋œ ๋ณด๋‹ค ์ž์„ธํ•œ ์ •๋ณด๋Š” ๊ณต์‹ ์ปค๋ฎค๋‹ˆํ‹ฐ(//cafe.naver.com/arcanemobile)๋ฅผ ํ†ตํ•ด์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด ๊ธฐ์‚ฌ๊ฐ€ ๋งˆ์Œ์— ๋“œ์…จ๋‹ค๋ฉด ๊ณต์œ ํ•ด์ฃผ์„ธ์š”', metadata={'source': 'https://beta.thisisgame.com/articles/265823', 'loc': 'https://beta.thisisgame.com/articles/265823', 'lastmod': '2015-09-25T01:34:31.000Z', 'changefreq': 'monthly', 'priority': '0.7'})

๋ฌธ์„œ๋ฅผ split ํ•˜๊ธฐ

tiktoken์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฌธ์„œ๋ฅผ split

from langchain.text_splitter import RecursiveCharacterTextSplitter

splitter = RecursiveCharacterTextSplitter.from_tiktoken_encoder(
    chunk_size=1000,
    chunk_overlap=200,
)

sitemap_loader = SitemapLoader(
    web_path="https://beta.thisisgame.com/sitemap.xml",
    filter_urls=[
        "https://beta.thisisgame.com/articles/2658"
    ],
    parsing_function=parse_page,
)

sitemap_loader.requests_per_second = 2

docs = sitemap_loader.load_and_split(text_splitter=splitter)
docs

56๊ฐœ์˜ ๋ฌธ์„œ๊ฐ€ ์Šคํฌ๋ž˜ํ•‘๋ซ์Œ

vector store์— embeddingํ•ด์„œ ์ €์žฅ( cache also )

์บ์‹œ๋„ ํ•˜๋ฉด์„œ embedding๋„ ํ•ด์„œ vector์— ์ €์žฅ

%pip install --user -Uq faiss-cpu
#%pip install --user -Uq faiss-gpu

from langchain.vectorstores.faiss import FAISS
from langchain_openai import OpenAIEmbeddings
from langchain.embeddings import CacheBackedEmbeddings
from langchain.storage import LocalFileStore

from dotenv import load_dotenv
load_dotenv()

cache_dir = LocalFileStore("./cache/")
embeddings = OpenAIEmbeddings()

cached_embeddings = CacheBackedEmbeddings.from_bytes_store (embeddings, cache_dir)

vector_store = FAISS.from_documents(docs, cached_embeddings)

retriver = vector_store.as_retriever()

docs = retriver.invoke("์ถ”์„")
docs

Chain (vector store์—์„œ ๊ฒ€์ƒ‰ํ•˜๊ณ  ๊ทธ๊ฑธ llm์œผ๋กœ ๋ณด๋‚ด๊ธฐ)

์ด์ œ ๋ฌธ์„œ๋ฅผ ์ „๋ถ€๋‹ค ๋ณด๋‚ด์ž.

์ด์ œ ์ด ํŒŒ์ผ์„ ์ „๋ถ€ llm์„ ๋ณด๋‚ด๊ฑฐ๋‚˜

map reduce๋ฅผ ์จ์„œ lla์— ๊ฐํŽ˜์ด์งˆ๋ฅด ๋ณด๋‚ด๊ณ  ๋‹ต๋ณ€์„ ๋ฐ›์€ํ›„ ์ด ๋‹ต๋ณ€์„ ๋งˆ์ง€๋ง‰์œผ๋กœ llm์œผ๋กœ ๋ณด๋‚ด๋ฉด ๋œ๋‹ค.


from langchain.prompts import ChatPromptTemplate

prompt = ChatPromptTemplate.from_messages(
    [
        ("system",
         """
         You are a helpful AI talking to a human, Answer questions using only the following context.
         If you don't know the answer just say you don't know, don't make it up:
         {context}
         """),
        ("human", "{question}"),
    ]
)

from langchain_openai import ChatOpenAI
llm = ChatOpenAI(
  temperature = 0.1,
  # model = "gpt-3.5-turbo",
)
from langchain.schema.runnable import RunnablePassthrough
chain = ({
    "context": retriver,
    "question": RunnablePassthrough(),
    }
    | prompt | llm
)

์งˆ๋ฌธ์„ ํ•ด์„œ llm์— ๋ณด๋‚ด๊ธฐ

chain.invoke("์•„์ผ€์ธ์— ๋Œ€ํ•œ ๊ธฐ์‚ฌ์†Œ๊ฐœํ•ด์ค˜")

์•„์ผ€์ธ์€ ๊ตฌ๊ธ€ ํ”Œ๋ ˆ์ด ์Šคํ† ์–ด, ๋„ค์ด๋ฒ„ ์•ฑ์Šคํ† ์–ด, ์ดํ†ต 3์‚ฌ์˜ ํ†ตํ•ฉ ๋งˆ์ผ“ ์›์Šคํ† ์–ด ๋“ฑ์„ ํ†ตํ•ด์„œ ๋ฌด๋ฃŒ๋กœ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒŒ์ž„์ž…๋‹ˆ๋‹ค. ํ˜„์žฌ ์ƒ์Šน์„ธ๋ฅผ ๋ณด์ด๋ฉฐ ์Šคํ† ์–ด ์ธ๊ธฐ 3๋“ฑ ๋ฐ ๋งค์ถœ ์ˆœ์œ„ 20์œ„๊ถŒ์— ์ง„์ž…ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฒŒ์ž„๊ณผ ๊ด€๋ จ๋œ ๋ณด๋‹ค ์ž์„ธํ•œ ์ •๋ณด๋Š” ๊ณต์‹ ์ปค๋ฎค๋‹ˆํ‹ฐ๋ฅผ ํ†ตํ•ด์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค

chain.invoke("์ถ”์„ ์ด๋ฒคํŠธ๋ฅผ ํ•œ ๊ฒŒ์ž„์€ ๋ญ˜๊ฐ€")
Previousdocument-loaderNextconfluence

Last updated 10 months ago

Was this helpful?