Skip to main content

Universal memory module for LLMs

Project description

๐Ÿง  Greeum v0.5.2

๐Ÿ‡ฐ๐Ÿ‡ท ํ•œ๊ตญ์–ด | ๐Ÿ‡บ๐Ÿ‡ธ English | ๐Ÿ‡จ๐Ÿ‡ณ ไธญๆ–‡ | ๐Ÿ‡ฏ๐Ÿ‡ต ๆ—ฅๆœฌ่ชž | ๐Ÿ‡ช๐Ÿ‡ธ Espaรฑol | ๐Ÿ‡ฉ๐Ÿ‡ช Deutsch | ๐Ÿ‡ซ๐Ÿ‡ท Franรงais

๋‹ค๊ตญ์–ด ์ง€์› LLM ๋…๋ฆฝ์ ์ธ ๊ธฐ์–ต ๊ด€๋ฆฌ ์‹œ์Šคํ…œ

๐Ÿ“Œ ๊ฐœ์š”

Greeum (๋ฐœ์Œ: ๊ทธ๋ฆฌ์Œ)์€ ๋ชจ๋“  LLM(๋Œ€๊ทœ๋ชจ ์–ธ์–ด ๋ชจ๋ธ)์— ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” ๋ฒ”์šฉ ๊ธฐ์–ต ๋ชจ๋“ˆ๋กœ์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค:

  • ์‚ฌ์šฉ์ž์˜ ๋ฐœํ™”, ๋ชฉํ‘œ, ๊ฐ์ •, ์˜๋„ ๋“ฑ ์žฅ๊ธฐ์ ์ธ ๊ธฐ๋ก ์ถ”์ 
  • ํ˜„์žฌ ๋งฅ๋ฝ๊ณผ ๊ด€๋ จ๋œ ๊ธฐ์–ต ํšŒ์ƒ
  • ๋‹ค๊ตญ์–ด ํ™˜๊ฒฝ์—์„œ์˜ ์‹œ๊ฐ„ ํ‘œํ˜„ ์ธ์‹ ๋ฐ ์ฒ˜๋ฆฌ
  • "๊ธฐ์–ต์„ ๊ฐ€์ง„ AI"๋กœ์„œ์˜ ๊ธฐ๋Šฅ

์ด๋ฆ„ "Greeum"์€ ํ•œ๊ตญ์–ด "๊ทธ๋ฆฌ์›€"์—์„œ ์˜๊ฐ์„ ๋ฐ›์•˜์œผ๋ฉฐ, ๊ธฐ์–ต ์‹œ์Šคํ…œ์˜ ๋ณธ์งˆ์„ ์™„๋ฒฝํ•˜๊ฒŒ ๋‹ด๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

Greeum์€ RAG(Retrieval-Augmented Generation) ์•„ํ‚คํ…์ฒ˜์— ๊ธฐ๋ฐ˜ํ•œ LLM ๋…๋ฆฝ์  ๋ฉ”๋ชจ๋ฆฌ ์‹œ์Šคํ…œ์ž…๋‹ˆ๋‹ค. ์ •๋ณด ์ €์žฅ ๋ฐ ๊ฒ€์ƒ‰(block_manager.py), ๊ด€๋ จ ๊ธฐ์–ต ๊ด€๋ฆฌ(cache_manager.py), ํ”„๋กฌํ”„ํŠธ ์ฆ๊ฐ•(prompt_wrapper.py) ๋“ฑ RAG์˜ ํ•ต์‹ฌ ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ๊ตฌํ˜„ํ•˜์—ฌ ๋” ์ •ํ™•ํ•˜๊ณ  ๋งฅ๋ฝ์— ๋งž๋Š” ์‘๋‹ต์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ”‘ ์ฃผ์š” ๊ธฐ๋Šฅ

  • ๋ธ”๋ก์ฒด์ธ ์œ ์‚ฌ ๊ตฌ์กฐ์˜ ์žฅ๊ธฐ ๊ธฐ์–ต(LTM): ๋ถˆ๋ณ€์„ฑ์„ ๊ฐ€์ง„ ๋ธ”๋ก ๋‹จ์œ„ ๋ฉ”๋ชจ๋ฆฌ ์ €์žฅ์†Œ
  • TTL ๊ธฐ๋ฐ˜์˜ ๋‹จ๊ธฐ ๊ธฐ์–ต(STM): ์ผ์‹œ์ ์œผ๋กœ ์ค‘์š”ํ•œ ์ •๋ณด๋ฅผ ํšจ์œจ์ ์œผ๋กœ ๊ด€๋ฆฌ
  • ์˜๋ฏธ์  ์—ฐ๊ด€์„ฑ: ํ‚ค์›Œ๋“œ/ํƒœ๊ทธ/๋ฒกํ„ฐ ๊ธฐ๋ฐ˜ ๊ธฐ์–ต ํšŒ์ƒ ์‹œ์Šคํ…œ
  • ์›จ์ดํฌ์ธํŠธ ์บ์‹œ: ํ˜„์žฌ ๋งฅ๋ฝ๊ณผ ๊ด€๋ จ๋œ ๊ธฐ์–ต์„ ์ž๋™์œผ๋กœ ๊ฒ€์ƒ‰
  • ํ”„๋กฌํ”„ํŠธ ์กฐํ•ฉ๊ธฐ: ๊ด€๋ จ ๊ธฐ์–ต์„ ํฌํ•จํ•œ LLM ํ”„๋กฌํ”„ํŠธ ์ž๋™ ์ƒ์„ฑ
  • ์‹œ๊ฐ„์  ์ถ”๋ก ๊ธฐ: ๋‹ค๊ตญ์–ด ํ™˜๊ฒฝ์—์„œ ๊ณ ๊ธ‰ ์‹œ๊ฐ„ ํ‘œํ˜„ ์ธ์‹ ์ฒ˜๋ฆฌ
  • ๋‹ค๊ตญ์–ด ์ง€์›: ํ•œ๊ตญ์–ด, ์˜์–ด ๋“ฑ ์ž๋™ ์–ธ์–ด ๊ฐ์ง€ ๋ฐ ์ฒ˜๋ฆฌ
  • Model Control Protocol: GreeumMCP ๋ณ„๋„ ํŒจํ‚ค์ง€๋ฅผ ํ†ตํ•ด Cursor, Unity, Discord ๋“ฑ ์™ธ๋ถ€ ๋„๊ตฌ ์—ฐ๋™ ์ง€์›

โš™๏ธ ์„ค์น˜ ๋ฐฉ๋ฒ•

  1. ์ €์žฅ์†Œ ๋ณต์ œ

    git clone https://github.com/DryRainEnt/Greeum.git
    cd Greeum
    
  2. ์˜์กด์„ฑ ์„ค์น˜

    pip install -r requirements.txt
    

๐Ÿงช ์‚ฌ์šฉ ๋ฐฉ๋ฒ•

CLI ์ธํ„ฐํŽ˜์ด์Šค

# ์žฅ๊ธฐ ๊ธฐ์–ต ์ถ”๊ฐ€
python cli/memory_cli.py add -c "์ƒˆ๋กœ์šด ํ”„๋กœ์ ํŠธ๋ฅผ ์‹œ์ž‘ํ–ˆ๊ณ  ์ •๋ง ํฅ๋ฏธ๋กœ์›Œ์š”"

# ํ‚ค์›Œ๋“œ๋กœ ๊ธฐ์–ต ๊ฒ€์ƒ‰
python cli/memory_cli.py search -k "ํ”„๋กœ์ ํŠธ,ํฅ๋ฏธ๋กœ์šด"

# ์‹œ๊ฐ„ ํ‘œํ˜„์œผ๋กœ ๊ธฐ์–ต ๊ฒ€์ƒ‰
python cli/memory_cli.py search-time -q "3์ผ ์ „์— ๋ฌด์—‡์„ ํ–ˆ์ง€?" -l "ko"

# ๋‹จ๊ธฐ ๊ธฐ์–ต ์ถ”๊ฐ€
python cli/memory_cli.py stm "์˜ค๋Š˜ ๋‚ ์”จ๊ฐ€ ์ข‹๋„ค์š”"

# ๋‹จ๊ธฐ ๊ธฐ์–ต ์กฐํšŒ
python cli/memory_cli.py get-stm

# ํ”„๋กฌํ”„ํŠธ ์ƒ์„ฑ
python cli/memory_cli.py prompt -i "ํ”„๋กœ์ ํŠธ๋Š” ์–ด๋–ป๊ฒŒ ์ง„ํ–‰๋˜๊ณ  ์žˆ๋‚˜์š”?"

REST API ์„œ๋ฒ„

# API ์„œ๋ฒ„ ์‹คํ–‰
python api/memory_api.py

์›น ์ธํ„ฐํŽ˜์ด์Šค: http://localhost:5000

API ์—”๋“œํฌ์ธํŠธ:

  • GET /api/v1/health - ์ƒํƒœ ํ™•์ธ
  • GET /api/v1/blocks - ๋ธ”๋ก ๋ชฉ๋ก ์กฐํšŒ
  • POST /api/v1/blocks - ๋ธ”๋ก ์ถ”๊ฐ€
  • GET /api/v1/search?keywords=keyword1,keyword2 - ํ‚ค์›Œ๋“œ ๊ฒ€์ƒ‰
  • GET /api/v1/search/time?query=yesterday&language=en - ์‹œ๊ฐ„ ํ‘œํ˜„ ๊ฒ€์ƒ‰
  • GET, POST, DELETE /api/v1/stm - ๋‹จ๊ธฐ ๊ธฐ์–ต ๊ด€๋ฆฌ
  • POST /api/v1/prompt - ํ”„๋กฌํ”„ํŠธ ์ƒ์„ฑ
  • GET /api/v1/verify - ๋ธ”๋ก์ฒด์ธ ๋ฌด๊ฒฐ์„ฑ ๊ฒ€์ฆ

Python ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

from greeum import BlockManager, STMManager, CacheManager, PromptWrapper
from greeum.text_utils import process_user_input
from greeum.temporal_reasoner import TemporalReasoner

# ์‚ฌ์šฉ์ž ์ž…๋ ฅ ์ฒ˜๋ฆฌ
user_input = "์ƒˆ๋กœ์šด ํ”„๋กœ์ ํŠธ๋ฅผ ์‹œ์ž‘ํ–ˆ๊ณ  ์ •๋ง ํฅ๋ฏธ๋กœ์›Œ์š”"
processed = process_user_input(user_input)

# ๋ธ”๋ก ๋งค๋‹ˆ์ €๋กœ ๊ธฐ์–ต ์ €์žฅ
block_manager = BlockManager()
block = block_manager.add_block(
    context=processed["context"],
    keywords=processed["keywords"],
    tags=processed["tags"],
    embedding=processed["embedding"],
    importance=processed["importance"]
)

# ์‹œ๊ฐ„ ๊ธฐ๋ฐ˜ ๊ฒ€์ƒ‰ (๋‹ค๊ตญ์–ด)
temporal_reasoner = TemporalReasoner(db_manager=block_manager, default_language="auto")
time_query = "3์ผ ์ „์— ๋ฌด์—‡์„ ํ–ˆ์ง€?"
time_results = temporal_reasoner.search_by_time_reference(time_query)

# ํ”„๋กฌํ”„ํŠธ ์ƒ์„ฑ
cache_manager = CacheManager(block_manager=block_manager)
prompt_wrapper = PromptWrapper(cache_manager=cache_manager)

user_question = "ํ”„๋กœ์ ํŠธ๋Š” ์–ด๋–ป๊ฒŒ ์ง„ํ–‰๋˜๊ณ  ์žˆ๋‚˜์š”?"
prompt = prompt_wrapper.compose_prompt(user_question)

# LLM์— ์ „๋‹ฌ
# llm_response = call_your_llm(prompt)

๐Ÿงฑ ์•„ํ‚คํ…์ฒ˜

greeum/
โ”œโ”€โ”€ greeum/                # ํ•ต์‹ฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ
โ”‚   โ”œโ”€โ”€ block_manager.py    # ์žฅ๊ธฐ ๊ธฐ์–ต ๊ด€๋ฆฌ
โ”‚   โ”œโ”€โ”€ stm_manager.py      # ๋‹จ๊ธฐ ๊ธฐ์–ต ๊ด€๋ฆฌ
โ”‚   โ”œโ”€โ”€ cache_manager.py    # ์›จ์ดํฌ์ธํŠธ ์บ์‹œ
โ”‚   โ”œโ”€โ”€ prompt_wrapper.py   # ํ”„๋กฌํ”„ํŠธ ์กฐํ•ฉ
โ”‚   โ”œโ”€โ”€ text_utils.py       # ํ…์ŠคํŠธ ์ฒ˜๋ฆฌ ์œ ํ‹ธ๋ฆฌํ‹ฐ
โ”‚   โ”œโ”€โ”€ temporal_reasoner.py # ์‹œ๊ฐ„ ๊ธฐ๋ฐ˜ ์ถ”๋ก 
โ”‚   โ”œโ”€โ”€ embedding_models.py  # ์ž„๋ฒ ๋”ฉ ๋ชจ๋ธ ํ†ตํ•ฉ
โ”œโ”€โ”€ api/                   # REST API ์ธํ„ฐํŽ˜์ด์Šค
โ”œโ”€โ”€ cli/                   # ๋ช…๋ น์ค„ ๋„๊ตฌ
โ”œโ”€โ”€ data/                  # ๋ฐ์ดํ„ฐ ์ €์žฅ ๋””๋ ‰ํ† ๋ฆฌ
โ”œโ”€โ”€ tests/                 # ํ…Œ์ŠคํŠธ ์Šค์œ„ํŠธ

๋ธŒ๋žœ์น˜ ๊ด€๋ฆฌ ๊ทœ์น™

  • main: ์•ˆ์ •์ ์ธ ๋ฆด๋ฆฌ์ฆˆ ๋ฒ„์ „ ๋ธŒ๋žœ์น˜
  • dev: ํ•ต์‹ฌ ํ”ผ์ณ ๊ฐœ๋ฐœ ๋ธŒ๋žœ์น˜ (๊ฐœ๋ฐœ ํ›„ ํ…Œ์ŠคํŠธ ๊ฒ€์ฆ์ด ์™„๋ฃŒ๋˜๋ฉด main์œผ๋กœ ๋จธ์ง€)
  • test-collect: ์„ฑ๋Šฅ ์ง€ํ‘œ ๋ฐ A/B ํ…Œ์ŠคํŠธ ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘์šฉ ๋ธŒ๋žœ์น˜

๐Ÿ“Š ์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ

Greeum์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์˜์—ญ์—์„œ ์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ๋ฅผ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค:

T-GEN-001: ์‘๋‹ต์˜ ๊ตฌ์ฒด์„ฑ ์ฆ๊ฐ€์œจ

  • Greeum ๋ฉ”๋ชจ๋ฆฌ ํ™œ์šฉ ์‹œ ์‘๋‹ต ํ’ˆ์งˆ ํ–ฅ์ƒ๋„ ์ธก์ •
  • ํ‰๊ท  18.6% ํ’ˆ์งˆ ํ–ฅ์ƒ ํ™•์ธ
  • ๊ตฌ์ฒด์  ์ •๋ณด ํฌํ•จ๋Ÿ‰ 4.2๊ฐœ ์ฆ๊ฐ€

T-MEM-002: ๋ฉ”๋ชจ๋ฆฌ ๊ฒ€์ƒ‰ Latency

  • ์›จ์ดํฌ์ธํŠธ ์บ์‹œ๋ฅผ ํ†ตํ•œ ๊ฒ€์ƒ‰ ์†๋„ ํ–ฅ์ƒ ์ธก์ •
  • ํ‰๊ท  5.04๋ฐฐ ์†๋„ ํ–ฅ์ƒ ํ™•์ธ
  • 1,000๊ฐœ ์ด์ƒ ๋ฉ”๋ชจ๋ฆฌ ๋ธ”๋ก์—์„œ ์ตœ๋Œ€ 8.67๋ฐฐ ์†๋„ ๊ฐœ์„ 

T-API-001: API ํ˜ธ์ถœ ํšจ์œจ์„ฑ

  • ๊ธฐ์–ต ๊ธฐ๋ฐ˜ ๋งฅ๋ฝ ์ œ๊ณต์œผ๋กœ ์ธํ•œ ์žฌ์งˆ๋ฌธ ๊ฐ์†Œ์œจ ์ธก์ •
  • ์žฌ์งˆ๋ฌธ ํ•„์š”์„ฑ 78.2% ๊ฐ์†Œ ํ™•์ธ
  • API ํ˜ธ์ถœ ํšŸ์ˆ˜ ๊ฐ์†Œ๋กœ ๋น„์šฉ ์ ˆ๊ฐ ํšจ๊ณผ

๐Ÿ“Š ๋ฉ”๋ชจ๋ฆฌ ๋ธ”๋ก ๊ตฌ์กฐ

{
  "block_index": 143,
  "timestamp": "2025-05-08T01:02:33",
  "context": "์ƒˆ๋กœ์šด ํ”„๋กœ์ ํŠธ๋ฅผ ์‹œ์ž‘ํ–ˆ๊ณ  ์ •๋ง ํฅ๋ฏธ๋กœ์›Œ์š”",
  "keywords": ["ํ”„๋กœ์ ํŠธ", "์‹œ์ž‘", "ํฅ๋ฏธ๋กœ์šด"],
  "tags": ["๊ธ์ •์ ", "์‹œ์ž‘", "๋™๊ธฐ๋ถ€์—ฌ"],
  "embedding": [0.131, 0.847, ...],
  "importance": 0.91,
  "hash": "...",
  "prev_hash": "..."
}

๐Ÿ”ค ์ง€์› ์–ธ์–ด

Greeum์€ ๋‹ค์Œ ์–ธ์–ด์˜ ์‹œ๊ฐ„ ํ‘œํ˜„ ์ธ์‹์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค:

  • ๐Ÿ‡ฐ๐Ÿ‡ท ํ•œ๊ตญ์–ด: ํ•œ๊ตญ์–ด ์‹œ๊ฐ„ ํ‘œํ˜„ ๊ธฐ๋ณธ ์ง€์› (์–ด์ œ, ์ง€๋‚œ์ฃผ, 3์ผ ์ „ ๋“ฑ)
  • ๐Ÿ‡บ๐Ÿ‡ธ ์˜์–ด: ์˜์–ด ์‹œ๊ฐ„ ํ˜•์‹ ์™„์ „ ์ง€์› (yesterday, 3 days ago ๋“ฑ)
  • ๐ŸŒ ์ž๋™ ๊ฐ์ง€: ์–ธ์–ด๋ฅผ ์ž๋™์œผ๋กœ ๊ฐ์ง€ํ•˜๊ณ  ์ ์ ˆํžˆ ์ฒ˜๋ฆฌ

๐Ÿ” ์‹œ๊ฐ„์  ์ถ”๋ก  ์˜ˆ์‹œ

# ํ•œ๊ตญ์–ด
result = evaluate_temporal_query("3์ผ ์ „์— ๋ญ ํ–ˆ์–ด?", language="ko")
# ๋ฐ˜ํ™˜๊ฐ’: {detected: True, language: "ko", best_ref: {term: "3์ผ ์ „"}}

# ์˜์–ด
result = evaluate_temporal_query("What did I do 3 days ago?", language="en")
# ๋ฐ˜ํ™˜๊ฐ’: {detected: True, language: "en", best_ref: {term: "3 days ago"}}

# ์ž๋™ ๊ฐ์ง€
result = evaluate_temporal_query("What happened yesterday?")
# ๋ฐ˜ํ™˜๊ฐ’: {detected: True, language: "en", best_ref: {term: "yesterday"}}

๐Ÿ”ง ํ”„๋กœ์ ํŠธ ํ™•์žฅ ๊ณ„ํš

  • Model Control Protocol: MCP ์ง€์›์— ๋Œ€ํ•ด์„œ๋Š” GreeumMCP ๋ ˆํฌ์ง€ํ† ๋ฆฌ๋ฅผ ํ™•์ธํ•˜์„ธ์š” - Greeum์„ Cursor, Unity, Discord ๋“ฑ์˜ ๋„๊ตฌ์™€ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” ๋ณ„๋„์˜ ํŒจํ‚ค์ง€์ž…๋‹ˆ๋‹ค
  • ๋‹ค๊ตญ์–ด ์ง€์› ๊ฐ•ํ™”: ์ผ๋ณธ์–ด, ์ค‘๊ตญ์–ด, ์ŠคํŽ˜์ธ์–ด ๋“ฑ ์ถ”๊ฐ€ ์–ธ์–ด ์ง€์›
  • ์ž„๋ฒ ๋”ฉ ๊ฐœ์„ : ์‹ค์ œ ์ž„๋ฒ ๋”ฉ ๋ชจ๋ธ ํ†ตํ•ฉ (์˜ˆ: sentence-transformers)
  • ํ‚ค์›Œ๋“œ ์ถ”์ถœ ํ–ฅ์ƒ: ์–ธ์–ด๋ณ„ ํ‚ค์›Œ๋“œ ์ถ”์ถœ ๊ตฌํ˜„
  • ํด๋ผ์šฐ๋“œ ํ†ตํ•ฉ: ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ฐฑ์—”๋“œ ์ถ”๊ฐ€ (SQLite, MongoDB ๋“ฑ)
  • ๋ถ„์‚ฐ ์ฒ˜๋ฆฌ: ๋Œ€๊ทœ๋ชจ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•œ ๋ถ„์‚ฐ ์ฒ˜๋ฆฌ ๊ตฌํ˜„

๐ŸŒ ์›น์‚ฌ์ดํŠธ

์›น์‚ฌ์ดํŠธ ๋ฐฉ๋ฌธ: greeum.app

๐Ÿ“„ ๋ผ์ด์„ ์Šค

MIT License

๐Ÿ‘ฅ ๊ธฐ์—ฌ

๋ฒ„๊ทธ ๋ณด๊ณ , ๊ธฐ๋Šฅ ์ œ์•ˆ, ํ’€ ๋ฆฌํ€˜์ŠคํŠธ ๋“ฑ ๋ชจ๋“  ๊ธฐ์—ฌ๋ฅผ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค!

๐Ÿ“ฑ ์—ฐ๋ฝ์ฒ˜

์ด๋ฉ”์ผ: playtart@play-t.art

๐Ÿš€ v0.6.0 ํ•˜์ด๋ผ์ดํŠธ (Python 3.12 ์ง€์›)

ํ•ญ๋ชฉ ์„ค๋ช…
Python ํ˜ธํ™˜์„ฑ 3.10 / 3.11 / 3.12 ํ…Œ์ŠคํŠธ ํ†ต๊ณผ(Tox & CI)
Working Memory STMWorkingSet ๋กœ ํ™œ์„ฑ ์Šฌ๋กฏ ๊ด€๋ฆฌ
๊ฒ€์ƒ‰ ์„ฑ๋Šฅ FAISS ๋ฒกํ„ฐ ์ธ๋ฑ์Šค + BERT Cross-Encoder ์žฌ๋žญํฌ
ํ”„๋กฌํ”„ํŠธ ํ† ํฐ-Budget ๊ธฐ๋ฐ˜ ๊ธฐ์–ต ์‚ฝ์ž…, KeyBERT ๊ณ ๊ธ‰ ํ‚ค์›Œ๋“œ
Evolution ๋ธ”๋ก ์š”์•ฝ/๋ณ‘ํ•ฉ, ์ƒ์ถฉ ๋…ธํŠธ API

๋น ๋ฅธ ์„ค์น˜ (Python 3.12 + ๋ชจ๋“  ํ™•์žฅ ์˜์กด์„ฑ)

python3.12 -m venv .venv && source .venv/bin/activate
pip install --upgrade pip
pip install greeum[all]  # faiss + transformers + keybert + openai ์ง€์›

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

greeum-0.6.0rc1.tar.gz (66.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

greeum-0.6.0rc1-py3-none-any.whl (62.9 kB view details)

Uploaded Python 3

File details

Details for the file greeum-0.6.0rc1.tar.gz.

File metadata

  • Download URL: greeum-0.6.0rc1.tar.gz
  • Upload date:
  • Size: 66.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.12

File hashes

Hashes for greeum-0.6.0rc1.tar.gz
Algorithm Hash digest
SHA256 eebe4ce9aa9bfbe4e382c8c1753180d0c4ae38b3233f84d7818f2b80b7f442cf
MD5 f58505e62e128508038bd55f90917e53
BLAKE2b-256 a4991880cf1100beb4a56745a6e0d37e035f200bbfe4e3e73a2508aab6fbc445

See more details on using hashes here.

File details

Details for the file greeum-0.6.0rc1-py3-none-any.whl.

File metadata

  • Download URL: greeum-0.6.0rc1-py3-none-any.whl
  • Upload date:
  • Size: 62.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.12

File hashes

Hashes for greeum-0.6.0rc1-py3-none-any.whl
Algorithm Hash digest
SHA256 0bcc8cbccf2451675746ef338923d39167fbca16c294b8e436ca8b1f97c0f242
MD5 f386a02657dba9fca144b71c52763047
BLAKE2b-256 89eb62d46dfed651c75cf259a647c5bb2df9b60fc9679a2e23262e9cc32aae96

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page