A newer version of the Gradio SDK is available: 6.15.2
title: FinGraph
emoji: ๐ธ๏ธ
colorFrom: indigo
colorTo: indigo
sdk: gradio
sdk_version: 6.14.0
python_version: 3.10.14
app_file: app.py
pinned: false
FinNode ๐ธ๏ธ
Neo4j GraphRAG ๊ธฐ๋ฐ AI ๋ด์ค ์ง์ ๊ทธ๋ํ ํ๋ซํผ
๐ ๋ณด๊ณ ์
์ต์ข ๊ธฐํ์ ๋ฐ ํ๋ก์ ํธ ๋ณด๊ณ ์ (์ ๋ฐ์ดํธ ์์ )
๐ฅ ์์ฐ ์์
1. ํ๋ก์ ํธ ๋ฐฐ๊ฒฝ ๋ฐ ๋ชฉ์
์ต์ AI ๊ธฐ์ ๊ณผ ํํ ํฌ ํธ๋ ๋๋ ๋น ๋ฅด๊ฒ ๋ณํํ๋ฉฐ, ์ผ๋ฐ์ ์ธ RAG(๊ฒ์ ์ฆ๊ฐ ์์ฑ) ๊ธฐ์ ๋ง์ผ๋ก๋ ์ฌ๋ฌ ๋ด์ค ๊ธฐ์ฌ์ ํฉ์ด์ ธ ์๋ '๊ธฐ์ -๊ธฐ์ -์๋น์ค' ๊ฐ์ ๋ณต์กํ ๊ด๊ณ๋ฅผ ํ์ ํ๊ธฐ ์ด๋ ต์ต๋๋ค.
FinNode๋ ๋ค์ด๋ฒ ๋ด์ค์์ AI ๊ด๋ จ ๊ธฐ์ฌ๋ฅผ ์ค์๊ฐ์ผ๋ก ์์งํ๊ณ , LangGraph ํ์ดํ๋ผ์ธ์ ํตํด ์ํฐํฐ์ ๊ด๊ณ๋ฅผ ์๋ ์ถ์ถํ์ฌ Neo4j ์ง์ ๊ทธ๋ํ์ ์ ์ฌํฉ๋๋ค. ์ด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก Vector ๋ฐ Cypher ๋ณตํฉ ๊ฒ์(GraphRAG)์ ์ํํ์ฌ, ๋จ์ํ ๋ฌธ์ ๊ฒ์์ ๋์ด **"ํ์ฌ ๊ธ์ตAI ๋ถ์ผ์์ ๊ฐ์ฅ ์ ๊ทน์ ์ธ ๊ธฐ์ ๊ณผ ๊ธฐ์ ํธ๋ ๋"**๋ฅผ ์๋ฒฝํ ๊ทผ๊ฑฐ์ ํจ๊ป ์ถ๋ก ํ๊ณ ๋ต๋ณํ๋ ์ฐจ์ธ๋ ์ฑ๋ด ์์คํ ์ ๋๋ค.
2. ์์คํ ์ํคํ ์ฒ
[Naver News]
โ Selenium ํฌ๋กค๋ง
โผ
[LangGraph Pipeline] (gpt-4o-mini)
check_ai โโ(AI ์๋)โโโถ ์คํต
โ (AI ๊ด๋ จ)
โผ
extract_entities
โ
โผ
extract_relations
โ
โผ
[Neo4j AuraDB]
Article / Content / AICompany / AITechnology / AIService / AIField / Media
โ
โผ
[GraphRAG ToolsRetriever] โโโถ gpt-4o ์ต์ข
๋ต๋ณ ์์ฑ
โ
โผ
[Gradio ์ฑ๋ด UI (Hugging Face Spaces ๋ฐฐํฌ)]
3. ์ฃผ์ ๊ธฐ๋ฅ
- ์ค์๊ฐ ๋ด์ค ํฌ๋กค๋ง: Selenium ํค๋๋ฆฌ์ค ๋ธ๋ผ์ฐ์ ๋ก ๋ค์ด๋ฒ ๋ด์ค ์นดํ ๊ณ ๋ฆฌ๋ณ ๊ธฐ์ฌ ์๋ ์์ง
- LangGraph AI ํ์ดํ๋ผ์ธ: ์์ง๋ ๊ธฐ์ฌ๋ฅผ 3๋จ๊ณ ์๋ ๋ถ์ (
ํ๋ณโ์ํฐํฐ ์ถ์ถโ๊ด๊ณ ์ถ์ถ) - Neo4j ์ง์ ๊ทธ๋ํ ์ ์ฌ: ์ถ์ถ๋ ์ํฐํฐ(Company, Tech, Service ๋ฑ)์ ๊ด๊ณ๋ฅผ MERGE ํธ๋์ญ์ ์ผ๋ก ์ค๋ณต ์์ด DB ์ ์ฌ
- GraphRAG ์ฑ๋ด: 3๊ฐ์ง Retriever๋ฅผ ํตํฉํ ToolsRetriever ๊ธฐ๋ฐ ์์ฐ์ด ์ง์์๋ต
Vector Retriever: ๋ณธ๋ฌธ ์ฒญํฌ ์๋ฏธ ์ ์ฌ๋ ๊ฒ์VectorCypher Retriever: ๋ฒกํฐ ๊ฒ์ ํ ํด๋น ๊ธฐ์ฌ์ ์ฐ๊ด ๊ทธ๋ํ(๊ธฐ์ ยท๊ธฐ์ ยท์๋น์ค) ๋ฐํ (ํธ๋ ๋ ๋ถ์์ ์ต์ ํ)Text2Cypher Retriever: ์์ฐ์ด โ Cypher ์ฟผ๋ฆฌ ์๋ ๋ณํ ๋ฐ ๋ฐ์ดํฐ ์ง๊ณ
- ๋ํ ๋งฅ๋ฝ ๋ฐ์ ํ์ด๋ธ๋ฆฌ๋ RAG & ์ง๋ฅํ Fallback ๋ผ์ฐํ
:
- Neo4j์์ ๊ฒ์๋ ์ง์ ๊ทธ๋ํ ์ ๋ณด์ ์ฌ์ฉ์์ ์ง๋ฌธ, ๊ทธ๋ฆฌ๊ณ **์ต๊ทผ ๋ํ ํ์คํ ๋ฆฌ(์ต๊ทผ 3๊ฐ ๋ฉ์์ง)**๋ฅผ ์ข
ํฉ ๋ถ์ํ์ฌ GPT-4o ๊ธฐ๋ฐ ์๊ฐ ํ์ ๊ฐ๋๋ ์ผ(
_is_context_sufficient)์ ์ค์๊ฐ ๊ตฌ๋. - ๊ฒ์ ๊ฒฐ๊ณผ๊ฐ ์ง๋ฌธ์ ๋ต๋ณํ๊ธฐ ์ถฉ๋ถํ ๊ฒฝ์ฐ
GraphRAG๋ชจ๋๋ก ๊ตฌ๋ํ์ฌ ๊ตฌ์ฒด์ ์ธ ๊ธฐ์ฌ ์ถ์ฒ ๋งํฌ(URL, ์ ๋ชฉ ๋ฑ)๋ฅผ ํฌํจํ ํฉํธ ๊ธฐ๋ฐ ๋ต๋ณ ์ ๊ณต. - ๊ด๋ จ ์ ๋ณด๊ฐ ๋ถ์กฑํ๊ฑฐ๋ ๊ธ์ต/IT ๋ด์ค๋ฅผ ๋ฒ์ด๋ ์ผ๋ฐ ์ง๋ฌธ(์: ์ํ ๊ณต์, ์ผ์ ๋ํ ๋ฑ), ํน์ ์ด์ ๋ํ ๋งฅ๋ฝ์ ์์กดํ๋ ์ง๋ฌธ์ ๋ํด์๋ ํ์คํ ๋ฆฌ๋ฅผ ์ข
ํฉ ๋ถ์ํ์ฌ ์ผ๋ฐ ์ง์ ๋ต๋ณ(
general๋ชจ๋)์ผ๋ก ์ ์ฐํ๊ฒ ์ค์์นญํ์ฌ ํ๊ฐ(Hallucination) ๋ฐฉ์ง ๋ฐ ์์ ์ฑ ๊ทน๋ํ.
- Neo4j์์ ๊ฒ์๋ ์ง์ ๊ทธ๋ํ ์ ๋ณด์ ์ฌ์ฉ์์ ์ง๋ฌธ, ๊ทธ๋ฆฌ๊ณ **์ต๊ทผ ๋ํ ํ์คํ ๋ฆฌ(์ต๊ทผ 3๊ฐ ๋ฉ์์ง)**๋ฅผ ์ข
ํฉ ๋ถ์ํ์ฌ GPT-4o ๊ธฐ๋ฐ ์๊ฐ ํ์ ๊ฐ๋๋ ์ผ(
- ์ฌ์ฉ์ ๊ฒฝํ(UX) ๋ฐ ํ๋ฆฌ๋ฏธ์ UI ์ต์ ํ:
- ์ฌ๋ฆผ ์ฑ ๋ฒ๋ธ: Gradio ๋งํฌ๋ค์ด ๋ ๋๋ฌ๊ฐ ๋ด๋ถ
<p>,<li>ํ๊ทธ ๋ฑ์ ๋ถ์ฌํ๋ ๋น์ ์์ ์ผ๋ก ํฐ ์ํ ์ฌ๋ฐฑ๊ณผ ๋ง์ง์ ์ถ์(.messageํจ๋ฉ10px 14px์กฐ์ ๋ฐ ๋ด๋ถ ๋ง์ง ์ต์ ํ)ํ์ฌ ๊ฐ๋ ์ฑ ๋๊ณ ์ฌ๋ฆผํ ํ๋ฆฌ๋ฏธ์ ๋งํ์ UI ๊ตฌํ. - ์ค์๊ฐ ํ์ ์งํ์ํฉ ์๊ฐํ: LangGraph ๋ํ ์คํธ๋ฆผ(Stream) ์ฐ๋์ ํตํด
"๐ ๊ฒ์ ์งํ ์ค...","๐ก ๋ต๋ณ ์์ฑ ์ค..."๊ณผ์ ์ ์ค์๊ฐ์ผ๋ก ๋ ธ์ถํ์ฌ ๋ค๋จ๊ณ RAG์ ์ง์ฐ ์๊ฐ ๋์์ ์ฌ์ฉ์ ์ฒด๊ฐ ๋๊ธฐ ์ฑ๋ฅ ํ์ .
- ์ฌ๋ฆผ ์ฑ ๋ฒ๋ธ: Gradio ๋งํฌ๋ค์ด ๋ ๋๋ฌ๊ฐ ๋ด๋ถ
4. ๊ธฐ์ ์คํ
- Language: Python 3.10
- AI / LLM: LangChain, LangGraph, OpenAI (
gpt-4o,text-embedding-3-small) - Database: Neo4j (AuraDB Cloud)
- Web / Crawling: Gradio, Selenium, Pandas
- CI/CD: GitHub Actions, Hugging Face Spaces
5. ๊ทธ๋ํ ์คํค๋ง
๋ ธ๋ ๋ฐ ๊ด๊ณ
| ๊ตฌ๋ถ | ๋ด์ฉ |
|---|---|
| ๋ ธ๋ (Nodes) | Article, Content, AICompany, AITechnology, AIService, AIField, Media, Category |
| ๊ด๊ณ (Edges) | HAS_CHUNK, PUBLISHED, BELONGS_TO, MENTIONS, DEVELOPS, INVESTS_IN, PARTNERS_WITH, APPLIES, USED_IN, RELATED_TO |
6. ์ค์น ๋ฐ ์คํ ๊ฐ์ด๋
์ฌ์ ์ค๋น
- Python 3.10+
- Neo4j AuraDB ์ธ์คํด์ค (๋๋ ๋ก์ปฌ Neo4j)
- OpenAI API Key
๋ก์ปฌ ์คํ
# 1. ์ ์ฅ์ ํด๋ก
git clone https://github.com/yuje/FinGraph.git
cd FinGraph
# 2. ๊ฐ์ํ๊ฒฝ ์์ฑ ๋ฐ ์์กด์ฑ ์ค์น
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
# 3. ํ๊ฒฝ ๋ณ์ ์ค์
cp .env.example .env
# .env ํ์ผ์ OpenAI Key, Neo4j ์ ์ ์ ๋ณด ์
๋ ฅ
# 4. Gradio ์ฑ ์คํ
python app.py
๋ธ๋ผ์ฐ์ ์์ http://localhost:7860 ์ ์
7. ๋ฐฐํฌ (Hugging Face Spaces)
GitHub โ Hugging Face Spaces ์๋ ๋ฐฐํฌ๊ฐ deploy.yml์ ํตํด ์ค์ ๋์ด ์์ต๋๋ค.
main ๋ธ๋์น์ Push ์ ์๋์ผ๋ก ๋๊ธฐํ๋ฉ๋๋ค.
- Hugging Face ํ ํฐ ๋ฐ๊ธ: Settings โ Tokens์์ Write ๊ถํ ํ ํฐ ์์ฑ
- GitHub Secrets ๋ฑ๋ก:
HF_TOKEN,HF_REPO(์: yuje/FinNode) ๋ฑ๋ก - HF Space Secrets ๋ฑ๋ก:
.envํญ๋ชฉ(OpenAI, Neo4j ํค) ๋์ผํ๊ฒ ๋ฑ๋ก
8. ์ฐธ๊ณ ์๋ฃ ๋ฐ ์คํ์์ค ํฌ๋ ๋ง (References & Credits)
- GraphRAG ToolsRetriever: graphrag-tools-retriever (GitHub)
- ๋ณธ ํ๋ก์ ํธ์ ํ์ด๋ธ๋ฆฌ๋ ๊ฒ์ ๋ฐ GraphRAG ๋ผ์ฐํ (Context-Sufficient Fallback) ์ค๊ณ์ ํต์ฌ ์ฐธ๊ณ ๋ชจ๋ธ๋ก ํ์ฉ๋์์ต๋๋ค.
- Neo4j ๋ฐ LLM ์ฐ๋ ์ค๋ฌด: ์ํค๋ ์ค Neo4j GraphRAG ๊ฐ์ด๋