title: FinGraph
emoji: ๐ธ๏ธ
colorFrom: indigo
colorTo: indigo
sdk: gradio
sdk_version: 4.44.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 ์ฟผ๋ฆฌ ์๋ ๋ณํ ๋ฐ ๋ฐ์ดํฐ ์ง๊ณ
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 ํค) ๋์ผํ๊ฒ ๋ฑ๋ก