OpenViking์€ ๋ฉ”๋ชจ๋ฆฌ, ๋ฆฌ์†Œ์Šค, ์Šคํ‚ฌ์„ ํ•œ๊บผ๋ฒˆ์— ๊ด€๋ฆฌํ•˜๋Š” ์—์ด์ „ํŠธ์šฉ ์ปจํ…์ŠคํŠธ DB๋‹ค. ๋ฒกํ„ฐDB ํ•˜๋‚˜ ๋” ๋ถ™์ด๋Š” ๋А๋‚Œ๋ณด๋‹ค, ์—์ด์ „ํŠธ๊ฐ€ ์ฝ๋Š” ์žฌ๋ฃŒ๋ฅผ ํŒŒ์ผ์‹œ์Šคํ…œ์ฒ˜๋Ÿผ ๊ณ„์ธต์ ์œผ๋กœ ๊ด€๋ฆฌํ•˜์ž๋Š” ์ œ์•ˆ์— ๊ฐ€๊น๋‹ค.

์ด ๋ ˆํฌ๋Š” 4์œ„ ยท โญ +10.2K๋กœ ํšŒ์ž๋œ ํ”„๋กœ์ ํŠธ๋‹ค. ๋ณ„ ์ˆซ์ž๋งŒ ๋ณด๋ฉด ์œ ํ–‰์ฒ˜๋Ÿผ ๋ณด์ผ ์ˆ˜ ์žˆ์ง€๋งŒ, ์‹ค์ œ๋กœ๋Š” ๊ฐœ๋ฐœ์ž๋“ค์ด ์ง€๊ธˆ ์–ด๋””์— ์‹œ๊ฐ„์„ ์“ฐ๊ณ  ์žˆ๋Š”์ง€๋ฅผ ๊ฝค ์†”์งํ•˜๊ฒŒ ๋“œ๋Ÿฌ๋‚ธ๋‹ค. ์—์ด์ „ํŠธ ํ”„๋กœ์ ํŠธ๊ฐ€ ์ปค์งˆ์ˆ˜๋ก ์ œ์ผ ๋จผ์ € ํ„ฐ์ง€๋Š” ๋ฌธ์ œ๊ฐ€ ์ปจํ…์ŠคํŠธ๋‹ค. ๋ฉ”๋ชจ๋ฆฌ๋Š” ํ•œ์ชฝ, ๋ฌธ์„œ๋Š” ํ•œ์ชฝ, ์Šคํ‚ฌ์€ ๋˜ ๋‹ค๋ฅธ ๊ณณ์— ํฉ์–ด์ ธ ์žˆ์œผ๋ฉด ๋””๋ฒ„๊น…์ด ์–ด๋ ต๋‹ค. OpenViking์€ ์ด ํฉ์–ด์ง„ ์žฌ๋ฃŒ๋ฅผ ํŒŒ์ผ์‹œ์Šคํ…œ ํŒจ๋Ÿฌ๋‹ค์ž„์œผ๋กœ ๋ฌถ์–ด ๋ณด์—ฌ์ฃผ๊ธฐ ๋•Œ๋ฌธ์—, โ€œ์—์ด์ „ํŠธ์˜ ๋‡Œ๋ฅผ ๊ด€๋ฆฌํ•œ๋‹คโ€๋Š” ๊ฐ๊ฐ์„ ์ง๊ด€์ ์œผ๋กœ ์ค€๋‹ค.

flowchart LR
A[๋ฌธ์ œ] --> B[openviking]
B --> C[์„ค์น˜]
C --> D[์ตœ์†Œ ์‹คํ—˜]
D --> E[์—…๋ฌด ์ ์šฉ ํŒ๋‹จ]

์น ํŒ ํŒ์„œํ˜• ์น˜ํŠธ์‹œํŠธ

  • ์ด ๋ ˆํฌ์˜ ํ•œ ์ค„ ํ‚ค์›Œ๋“œ๋Š” openviking๋‹ค.
  • ์ด๋ฒˆ ๋ณด๊ฐ•์—์„œ๋Š” ์„ค์น˜์™€ ์‚ฌ์šฉ ์ˆœ์„œ๋ฅผ ๊ณต์‹ README ๊ธฐ์ค€์œผ๋กœ ๋” ์ด˜์ด˜ํ•˜๊ฒŒ ์ •๋ฆฌํ–ˆ๋‹ค.
  • ์ฝ์„ ๋•Œ๋Š” ์ „์ œ ์กฐ๊ฑด โ†’ ์„ค์น˜ โ†’ ์ฒซ ์‹คํ–‰ โ†’ ๊ฒ€์ฆ ์ˆœ์„œ๋กœ ๋ณด๋ฉด ๋œ๋‹ค.
  • โ€œ๋Œ€๋‹จํ•ด ๋ณด์ธ๋‹คโ€๋ณด๋‹ค โ€œ๋‚ด ์—…๋ฌด์—์„œ ๋ฐ˜๋ณต ๋น„์šฉ์„ ์ค„์ด๋Š”๊ฐ€โ€๋ฅผ ๋จผ์ € ๋ณธ๋‹ค.

์ด ๋ ˆํฌ๋ฅผ ํ•œ ์ค„๋กœ ๋ณด๋ฉด

OpenViking์€ ๋ฉ”๋ชจ๋ฆฌ, ๋ฆฌ์†Œ์Šค, ์Šคํ‚ฌ์„ ํ•œ๊บผ๋ฒˆ์— ๊ด€๋ฆฌํ•˜๋Š” ์—์ด์ „ํŠธ์šฉ ์ปจํ…์ŠคํŠธ DB๋‹ค. ๋ฒกํ„ฐDB ํ•˜๋‚˜ ๋” ๋ถ™์ด๋Š” ๋А๋‚Œ๋ณด๋‹ค, ์—์ด์ „ํŠธ๊ฐ€ ์ฝ๋Š” ์žฌ๋ฃŒ๋ฅผ ํŒŒ์ผ์‹œ์Šคํ…œ์ฒ˜๋Ÿผ ๊ณ„์ธต์ ์œผ๋กœ ๊ด€๋ฆฌํ•˜์ž๋Š” ์ œ์•ˆ์— ๊ฐ€๊น๋‹ค.

์™œ ์ง€๊ธˆ ์ด ๋ ˆํฌ๊ฐ€ ๋œจ๋Š”๊ฐ€

์—์ด์ „ํŠธ ํ”„๋กœ์ ํŠธ๊ฐ€ ์ปค์งˆ์ˆ˜๋ก ์ œ์ผ ๋จผ์ € ํ„ฐ์ง€๋Š” ๋ฌธ์ œ๊ฐ€ ์ปจํ…์ŠคํŠธ๋‹ค. ๋ฉ”๋ชจ๋ฆฌ๋Š” ํ•œ์ชฝ, ๋ฌธ์„œ๋Š” ํ•œ์ชฝ, ์Šคํ‚ฌ์€ ๋˜ ๋‹ค๋ฅธ ๊ณณ์— ํฉ์–ด์ ธ ์žˆ์œผ๋ฉด ๋””๋ฒ„๊น…์ด ์–ด๋ ต๋‹ค. OpenViking์€ ์ด ํฉ์–ด์ง„ ์žฌ๋ฃŒ๋ฅผ ํŒŒ์ผ์‹œ์Šคํ…œ ํŒจ๋Ÿฌ๋‹ค์ž„์œผ๋กœ ๋ฌถ์–ด ๋ณด์—ฌ์ฃผ๊ธฐ ๋•Œ๋ฌธ์—, โ€œ์—์ด์ „ํŠธ์˜ ๋‡Œ๋ฅผ ๊ด€๋ฆฌํ•œ๋‹คโ€๋Š” ๊ฐ๊ฐ์„ ์ง๊ด€์ ์œผ๋กœ ์ค€๋‹ค.

๋ ˆํฌ ์•ˆ์—์„œ ๋จผ์ € ๋ณผ ๊ฒƒ

  • L0/L1/L2 ๊ณ„์ธต ๋กœ๋”ฉ ๊ตฌ์กฐ๋กœ ํ•„์š”ํ•œ ๋ฌธ๋งฅ๋งŒ ๋‹จ๊ณ„์ ์œผ๋กœ ๋ถˆ๋Ÿฌ์˜ค๋Š” ๋ฐฉ์‹
  • ๋ฉ”๋ชจ๋ฆฌยท๋ฆฌ์†Œ์Šคยท์Šคํ‚ฌ์„ ํ†ตํ•ฉ ๊ด€๋ฆฌํ•˜๋Š” ํŒŒ์ผ์‹œ์Šคํ…œํ˜• ์ธํ„ฐํŽ˜์ด์Šค
  • ๊ฒ€์ƒ‰ ๊ฒฝ๋กœ๋ฅผ ์‹œ๊ฐํ™”ํ•ด ์™œ ์ด ๋ฌธ๋งฅ์ด ์„ ํƒ๋๋Š”์ง€ ์ถ”์ ํ•˜๋Š” ๊ด€์ฐฐ์„ฑ ๊ธฐ๋Šฅ

์„ค์น˜ ์ „์— ํ™•์ธํ•  ๊ฒƒ

  • Python 3.10+
  • Go 1.22+ (AGFS ๋นŒ๋“œ์šฉ)
  • GCC 9+ ๋˜๋Š” Clang 11+
  • Embedding ๋ชจ๋ธ๊ณผ VLM ๋ชจ๋ธ์— ์“ธ API ํ‚ค

์„ค์น˜ ๋ฐฉ๋ฒ•

๊ณต์‹ ํ™•์ธ ๋งํฌ

ํŒจํ‚ค์ง€์™€ CLI ์„ค์น˜

์„œ๋ฒ„/๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ณธ์ฒด๋Š” Python ํŒจํ‚ค์ง€๋กœ ์„ค์น˜ํ•œ๋‹ค.

pip install openviking --upgrade --force-reinstall

CLI๋Š” Rust ๋ฒ„์ „์ด ๋ณ„๋„๋กœ ์žˆ๋‹ค.

curl -fsSL https://raw.githubusercontent.com/volcengine/OpenViking/main/crates/ov_cli/install.sh | bash

๋˜๋Š” ์†Œ์Šค์—์„œ ์ง์ ‘ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ๋‹ค.

cargo install --git https://github.com/volcengine/OpenViking ov_cli

์„ค์ • ํŒŒ์ผ ๋งŒ๋“ค๊ธฐ

OpenViking์€ ์„œ๋ฒ„ ์„ค์ •(ov.conf)๊ณผ CLI ์„ค์ •(ovcli.conf)์„ ๋จผ์ € ์žก์•„์•ผ ํ•œ๋‹ค. ์„œ๋ฒ„ ์„ค์ • ํŒŒ์ผ ์˜ˆ์‹œ ๊ฒฝ๋กœ๋Š” ~/.openviking/ov.conf๋‹ค.

{
  "storage": { "workspace": "/home/your-name/openviking_workspace" },
  "embedding": {
    "dense": {
      "api_base": "<api-endpoint>",
      "api_key": "<your-api-key>",
      "provider": "<provider-type>",
      "dimension": 1024,
      "model": "<embedding-model>"
    }
  },
  "vlm": {
    "api_base": "<api-endpoint>",
    "api_key": "<your-api-key>",
    "provider": "<provider-type>",
    "model": "<vlm-model>"
  }
}

๊ทธ๋‹ค์Œ ํ™˜๊ฒฝ๋ณ€์ˆ˜๋ฅผ ์—ฐ๊ฒฐํ•œ๋‹ค.

export OPENVIKING_CONFIG_FILE=~/.openviking/ov.conf

CLI๋Š” ๋ณดํ†ต ์•„๋ž˜์ฒ˜๋Ÿผ ~/.openviking/ovcli.conf๋ฅผ ์“ด๋‹ค.

{
  "url": "http://localhost:1933",
  "timeout": 60.0,
  "output": "table"
}
export OPENVIKING_CLI_CONFIG_FILE=~/.openviking/ovcli.conf

์ฒซ ์‹คํ–‰

README์˜ ์ฒซ ์˜ˆ์ œ๋Š” ์•„๋ž˜ ์ˆœ์„œ๋‹ค.

openviking-server

๋‹ค๋ฅธ ํ„ฐ๋ฏธ๋„์—์„œ CLI๋ฅผ ๋ถ™์ธ๋‹ค.

ov status
ov add-resource https://github.com/volcengine/OpenViking
ov ls viking://resources/
ov tree viking://resources/volcengine -L 2
ov find "what is openviking"
ov grep "openviking" --uri viking://resources/volcengine/OpenViking/docs/zh

Bot ๊ธฐ๋Šฅ๊นŒ์ง€ ๋ณด๋ ค๋ฉด ์•„๋ž˜์ฒ˜๋Ÿผ ํ™•์žฅ ์„ค์น˜ ํ›„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.

pip install "openviking[bot]"
openviking-server --with-bot
ov chat

์‚ฌ์šฉ ๋ฐฉ๋ฒ•

  1. ๋จผ์ € workspace๋ฅผ ๋น„์›Œ์ง„ ํ…Œ์ŠคํŠธ ํด๋”๋กœ ์ •ํ•˜๊ณ , ๋ฆฌ์†Œ์Šค 1๊ฐœ๋งŒ ov add-resource๋กœ ๋„ฃ๋Š”๋‹ค.
  2. ๊ทธ๋‹ค์Œ ov ls, ov tree, ov find, ov grep ์ˆœ์œผ๋กœ ํŒŒ์ผ์‹œ์Šคํ…œํ˜• ํƒ์ƒ‰ ํ๋ฆ„์„ ์ฒดํ—˜ํ•œ๋‹ค.
  3. ์—ฌ๊ธฐ์„œ ์ค‘์š”ํ•œ ๊ฑด ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ๋งŒ์ด ์•„๋‹ˆ๋ผ ๊ฒฝ๋กœ ๊ตฌ์กฐ๊ฐ€ ์ดํ•ด๋˜๋Š”์ง€๋‹ค. OpenViking์˜ ์žฅ์ ์€ ์ด ํŠธ๋ž™์„ ๋ˆˆ์— ๋ณด์ด๊ฒŒ ๋งŒ๋“ ๋‹ค๋Š” ์ ์ด๋‹ค.
  4. ๋ฆฌ์†Œ์Šค ํƒ์ƒ‰์ด ์•ˆ์ •๋˜๋ฉด ๊ทธ๋‹ค์Œ์—์•ผ ์‹ค์ œ ์—์ด์ „ํŠธ๋‚˜ bot ๊ธฐ๋Šฅ๊ณผ ์—ฐ๊ฒฐํ•œ๋‹ค.

README ๊ธฐ์ค€ ๊ฐ€์žฅ ์•ˆ์ „ํ•œ ์ฒซ ์‹คํ—˜์€ ์„œ๋ฒ„ ํ•œ ๋Œ€ + ๋ฆฌ์†Œ์Šค ํ•œ ๊ฐœ + ๊ฒ€์ƒ‰ 4์ข…์ด๋‹ค. ํ•œ ๋ฒˆ์— ๋ฉ”๋ชจ๋ฆฌ, bot, ๋Œ€๊ทœ๋ชจ ๋ฌธ์„œ์…‹๊นŒ์ง€ ์˜ฌ๋ฆฌ๊ธฐ๋ณด๋‹ค ov add-resource โ†’ ov ls โ†’ ov find โ†’ ov grep๋งŒ ๋จผ์ € ํ•ด๋ณด๋Š” ํŽธ์ด ๊ตฌ์กฐ๋ฅผ ์ดํ•ดํ•˜๊ธฐ ์‰ฝ๋‹ค.

์–ด๋””์— ๋ฐ”๋กœ ์จ๋จน์„ ์ˆ˜ ์žˆ๋‚˜

์‚ฌ๋ก€ A. ์žฅ๊ธฐ ์‹คํ–‰ ์—์ด์ „ํŠธ

ํ•˜๋ฃจ ์ข…์ผ ๋ฌธ์„œ๋ฅผ ์ฝ๊ณ  ์ž‘์—…ํ•˜๋Š” ์—์ด์ „ํŠธ๋Š” ์„ธ์…˜์ด ๊ธธ์–ด์งˆ์ˆ˜๋ก ๋ฌธ๋งฅ์ด ๋น„๋Œ€ํ•ด์ง„๋‹ค. OpenViking ๊ฐ™์€ ๊ณ„์ธตํ˜• ์ปจํ…์ŠคํŠธ ์ €์žฅ์†Œ๋ฅผ ์“ฐ๋ฉด ํ•„์š” ์—†๋Š” ์ •๋ณด๋ฅผ ๋œ ์˜ฌ๋ฆฌ๊ณ , ์ž์ฃผ ์“ฐ๋Š” ์žฌ๋ฃŒ๋ฅผ ๊ตฌ์กฐํ™”ํ•ด ์žฌํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

์‚ฌ๋ก€ B. ํŒ€ ์ง€์‹๋ฒ ์ด์Šค ์šด์˜

ํŒ€ ๊ทœ์น™, ์ œํ’ˆ ์„ค๋ช…, ์šด์˜ ๊ธฐ๋ก, ์Šคํ‚ฌ ํŒŒ์ผ์ด ์ œ๊ฐ๊ฐ ๋†€๊ณ  ์žˆ๋‹ค๋ฉด ํŒŒ์ผ์‹œ์Šคํ…œ์ฒ˜๋Ÿผ ๋ฌถ์–ด๋‘๋Š” ๋ฐฉ์‹์ด ๋””๋ฒ„๊น…์— ์œ ๋ฆฌํ•˜๋‹ค. โ€œ์™œ ์ด๋Ÿฐ ๋‹ต์„ ํ–ˆ์ง€?โ€๋ฅผ ์ถ”์ ํ•  ๋•Œ ๊ฒฝ๋กœ๋ฅผ ๋ณด๋Š” ๊ฒƒ์ด ํฐ ๋„์›€์ด ๋œ๋‹ค.

์ฒ˜์Œ ํ•ด๋ณผ ์ตœ์†Œ ์‹คํ—˜

  1. Python ํŒจํ‚ค์ง€์™€ CLI๋ฅผ ์„ค์น˜ํ•œ๋‹ค.
  2. ov.conf์™€ ovcli.conf๋ฅผ ์ตœ์†Œ ์„ค์ •์œผ๋กœ ๋งŒ๋“ ๋‹ค.
  3. openviking-server๋ฅผ ๋„์šฐ๊ณ  ov status๊ฐ€ ์‘๋‹ตํ•˜๋Š”์ง€ ๋ณธ๋‹ค.
  4. GitHub ๋ ˆํฌ ํ•˜๋‚˜๋ฅผ ๋ฆฌ์†Œ์Šค๋กœ ์ถ”๊ฐ€ํ•ด ๊ฒ€์ƒ‰/ํŠธ๋ฆฌ/grep ํ๋ฆ„์„ ๊ฒ€์ฆํ•œ๋‹ค.

๊ฒ€์ฆ ํฌ์ธํŠธ๋Š” ๊ฐ„๋‹จํ•˜๋‹ค. ์ ์šฉ ์ „ํ›„๋ฅผ ๋น„๊ตํ•  ๋•Œ๋Š” ๋ชจ๋ธ ์ฒด๊ฐ๋ณด๋‹ค ๋ถˆํ•„์š”ํ•œ ๋ฌธ๋งฅ ๋กœ๋“œ ๊ฐ์†Œ, ๊ฒ€์ƒ‰ ์‹คํŒจ ๊ฐ์†Œ, ๋””๋ฒ„๊น… ์†๋„๋ฅผ ๋ด์•ผ ํ•œ๋‹ค.

๋ณผ ๋•Œ ์ฃผ์˜ํ•  ์ 

  • ์„ค์ • ํ•ญ๋ชฉ์ด ์ œ๋ฒ• ๋งŽ์•„ ์ฒ˜์Œ๋ถ€ํ„ฐ ํ’€์„ธํŒ…ํ•˜๋ฉด ํ”ผ๊ณคํ•˜๋‹ค.
  • ์ข‹์€ ๊ตฌ์กฐ๊ฐ€ ์žˆ์–ด๋„ ๋„ฃ๋Š” ๋ฌธ์„œ ํ’ˆ์งˆ์ด ๋‚ฎ์œผ๋ฉด ๊ฒฐ๊ณผ๋Š” ๋‚˜๋น ์ง„๋‹ค.
  • ๋ชจ๋ธยท์ž„๋ฒ ๋”ฉยท์Šคํ† ๋ฆฌ์ง€ ์„ค์ •์ด ๋™์‹œ์— ์–ฝํ˜€ ์žˆ์–ด PoC ๋ฒ”์œ„๋ฅผ ์ž‘๊ฒŒ ์žก๋Š” ํŽธ์ด ์ข‹๋‹ค.

๋‹ค์Œ ์ฝ๊ธฐ

์ด ๊ธ€์€ AI๋ฅผ ํ™œ์šฉํ•ด ์ดˆ์•ˆ์„ ์ •๋ฆฌํ–ˆ๊ณ , GitHub README์™€ ๊ณต์‹ ๋งํฌ๋ฅผ ๋‹ค์‹œ ํ™•์ธํ•ด ์‹ค๋ฌด ์ ์šฉ ๊ด€์ ์œผ๋กœ ํ’€์–ด์ผ๋‹ค.