-
Notifications
You must be signed in to change notification settings - Fork 283
[N-1] 04-GraphRAG / 07-AcademicSearchSystem #270
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[N-1] 04-GraphRAG / 07-AcademicSearchSystem #270
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
생각나는대로 냅다 다 적겠습니다ㅎㅎ가벼운 마음으로 고려해주시면 감사하겠습니다!
1. Overview
-
설명해야할 내용이 너무 많은 주제라 고민이 많으셨을것 같아요. 핵심만 잘 정리중이신 느낌이라 좋지만
Knowledge Graph
와 같이 중요하지만 한마디로 설명하기엔 너무 복잡한 내용은 잘 설명된 곳으로 링크 보내면 좀 더 친절한 글이 될 것 같습니다 -
GraphRAG의 장점을 잘 설명해주셨는데, 구축 난이도와 같은 단점은? 이라는 생각이 일부러 안넣으신건가? 라는 생각과 함께 들었습니다.
2. Environment Setup:
사소하지만, !pip install
임시방편 부분들 공통부분에 넣으면 되는걸로 알고있습니다ㅎ
# Install required packages
from langchain_opentutorial import package
package.install(
[
"langchain-neo4j",
"pyalex"
],
verbose=False,
upgrade=False,
)
3. 데이터
-
노드에 대한 설명은 잘 해주셨으나, 엣지는 어떻게 구성되어있는지 한번에 볼 수 있는 그림이 있으면 좋을것 같다는 생각이 들었습니다.
-
json 파일 내용도 어떻게 구성되어있는지 살짝 보여주시면 좋을것 같습니다.
4. 실행 코드
마지막에서 두번째 셀
chain = GraphCypherQAChain.from_llm(
llm, graph=graph, verbose=True, qa_prompt=CYPHER_QA_PROMPT, cypher_prompt=CYPHER_GENERATION_PROMPT,
allow_dangerous_requests = True
)
마지막에서 두 번째 셀의 from_llm
부분은 현재 방식이 오래된 것 같습니다.
예전(3~4개월 전) 기준으로는 LangChain이 해당 클래스를 업데이트하지 않았던 것으로 기억하는데, 최신 상태에서도 그대로인지 살짝 확인해보시면 좋을 것 같습니다.
완전 초안이고, 생각나는 대로 마구잡이로 적어본 내용이라 가볍게 참고만 해주시면 좋겠습니다! 고생하셨습니다!
상세한 리뷰 정말 감사드립니다🥰 다음번 커밋에 피드백주신 바를 적극 반영해 보도록 하겠습니다! 정말 감사합니다 (_ _) |
저도 코드 돌려보고 정리해서 적어봅니다! 1. Overview
2. 데이터
3. GraphRAG 구현
짧은 의견이지만, 가능하고 필요하다고 생각되는 파트만 적용해주시면 될 것 같습니다! |
@syshin0116 리뷰 최대한 반영해 보았습니다 (링크 추가나 아주 조금이지만 단점을 언급한 부분 등..?) @dancing-with-coffee 피드백주신 대로 데이터에 대한 설명 최대한 상세히 첨부하려 노력했습니다! 그리고 저도 논문을 추천하는 방향으로 가고 싶어 Langgraph를 활용해 보았는데... 성능이 영 안 좋아서 그대로 반영하는 게 맞을지 모르겠네요... ; - ; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[Todo]
아직 코드는 제대로 돌려보지 못해서, 외형적인 부분만 먼저 작성했습니다. 코드 실행 동작 확인 부분은 확인후에 체크하겠습니다!
[Review Checklist]
-
Review OS:
- Windows / Mac / Linux (Mac)
-
Template Rule 준수 여부:
- Template Rule 가이드를 준수하였는가? (Check 표기)
-
Table of Contents 링크 확인:
- Table of Contents의 링크가 원활하게 동작하는지 확인하였는가? (Check 표기)
Let's make the Academic Search System
이 작동안합니다! let-s 에서 - 하나 빼니 작동하네요ㅎㅎ
[Let's make the Academic Search System](#lets-make-the-academic-search-system)
- 이미지 파일명 검토:
- 이미지가 포함되어 있다면, 이미지의 파일명이 가이드를 준수하였는가? (Check 표기)
이미지 파일명이
10-academic-search-system
시작하는데07-academic-search-system
로 수정이 필요해 보입니다!
-
최신 import 방식 사용 여부:
- import 구문이 예전 legacy 방식이 아닌 최신 버전을 따르는가? (Check 표기)
-
코드 동작 확인:
- 모든 코드가 오류 없이 동작하는가? (Check 표기)
- Warning 발생 시 코멘트에 적어주세요.
-
제출 파일 확인:
- 꼭 필요한 파일들만 제출되었는가?
- 튜토리얼 외 설정 파일이나 다른 분이 작업한 파일이 포함되었는지 Files Changed에서 확인 부탁드립니다. (Check 표기)
- 꼭 필요한 파일들만 제출되었는가?
-
기타 의견:
Environement Setup

NEO4J_URL
대신 NEO4J_URI
을 공통적으로 사용하기로 했습니다. 통일해주시면 좋을것 같습니다!
# Set environment variables
from langchain_opentutorial import set_env
set_env(
{
"OPENAI_API_KEY": "",
"LANGCHAIN_API_KEY": "",
"LANGCHAIN_TRACING_V2": "true",
"LANGCHAIN_ENDPOINT": "https://api.smith.langchain.com",
"LANGCHAIN_PROJECT": "Academic Search System",
}
)
이부분에 "NEO4J_URI"
, "NEO4J_USERNAME"
, "NEO4J_PASSWORD"
추가해주면 조금 더 친절한 튜토리얼이 될것 같아요!
docker-compose.yml 부분
```yaml
: 3중 backtick 뒤에 yaml 명시해주면 색깔 들어가서 좀 더 보기 편해집니다!ㅎㅎ
LangGraph
그래프를 시각화해서 한번 보여주면 좋을것 같습니다
from IPython.display import Image, display
from langchain_core.runnables.graph import CurveStyle, MermaidDrawMethod, NodeStyles
# Visualize the compiled StateGraph as a Mermaid diagram
display(
Image(
app.get_graph().draw_mermaid_png(
draw_method=MermaidDrawMethod.API,
)
)
)
고생하셨습니다!! 유용한 튜토리얼이어서, 조만간 참고해서 논문 검색해주는 서비스 만들어보고싶네요.
Ta-da! 같은 텐션 재밋었습니다ㅋㅋㅋㅋ
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[Review Checklist]
-
Review OS:
- Windows / Mac / Linux (Mac)
-
Template Rule 준수 여부:
- Template Rule 가이드를 준수하였는가? (Check 표기)
-
Table of Contents 링크 확인:
- Table of Contents의 링크가 원활하게 동작하는지 확인하였는가? (Check 표기)
-
이미지 파일명 검토:
- 이미지가 포함되어 있다면, 이미지의 파일명이 가이드를 준수하였는가? (Check 표기)
-
최신 import 방식 사용 여부:
- import 구문이 예전 legacy 방식이 아닌 최신 버전을 따르는가? (Check 표기)
-
코드 동작 확인:
- 모든 코드가 오류 없이 동작하는가? (Check 표기)
- Warning 발생 시 코멘트에 적어주세요.
-
제출 파일 확인:
- 꼭 필요한 파일들만 제출되었는가?
- 튜토리얼 외 설정 파일이나 다른 분이 작업한 파일이 포함되었는지 Files Changed에서 확인 부탁드립니다. (Check 표기)
- 꼭 필요한 파일들만 제출되었는가?
-
기타 의견:
내용 확인했습니다 고생하셨습니다!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🖥️ OS: Mac/Linux(docker)
✅ Checklist
- Template: Tutorials follows the required template.
- Table of Contents(TOC) Links: All Table of Contents links work. ((Yes/No)
- Image: Image filenames follow guidelines.
- Imports: All import statements use the latest versions. Ensure "langchain-teddynote" is not used.
- Code Execution: Code runs without errors.
- Comments: {Write freely, 한국어 기술 가능}
@syshin0116 님이 자세하게 모두 수정해주셔서, 최종 commit version에서 모두 정상 동작합니다! 다만, teddy님 설치 영상에도 linux 파트가 없고 대부분 이 튜토리얼을 실행하시는 분들이 docker, docker-compose 같은건 잘 모를것 같아서.. 추가적인 튜토리얼이 따로 있어야할 것 같아요!
neo4j 뿐만 아니라, 다른 튜토리얼에도 있을 것 같아서 docker를 사용하는 다른 튜토리얼 제작자 분들하고 같이 논의해보시면 좋을 것 같습니다!
저는 docker, docker-compose를 써봤지만 거기서 poetry 세팅하고 수정하는데에도 시간이 꽤 걸렸거든요ㅠㅠ
진짜 환경 세팅하시는데 힘드셨을 것 같습니다..ㅎㅎ 고생 많으셨어요!
129fc69
into
LangChain-OpenTutorial:main
[2025/01/08]
pyalex
를 이용해 JSON 데이터를 다운로드하고, 해당 JSON 데이터를 Neo4J에 삽입하는 코드를 추가하였습니다.Langchain
의GraphCypherQAChain
과Neo4jGraph
를 이용해 아주 간단한 GraphRAG 구현을 완료하였습니다.GraphDB도 처음 써보고 pyalex도 처음 접하는 데이터셋이라 파악하는데 시간이 조금 오래 걸려 완성도가 심히 떨어집니다...ㅠㅠ 빠른 시일 내에 업데이트할 수 있도록 하겠습니다!!!!
[2025/01/16]
pyalex
를 좀 더 상세히 분석해 노드 및 관계에 대한 설정을 달리 하였고, 이에 대한 부연 설명을 추가하였습니다.Langgraph
를 이용해 Semantic Search 후에 답변을 생성하는 chain을 만들었습니다.Langgraph
에 대한 숙련도가 미숙하여 사실 구성한 그래프가 원하는 바대로 작동하지 않습니다... 그런데 어떻게 그래프를 구성해야 할 지 도저히 감이 오질 않습니다. 제대로 실행되지 않는다고 하면, 차라리 제외하는 게 나을까 싶기도 합니다.. 조금 더 구조를 고민해보고 개선해야 할 듯 싶습니다.Author Checklist
PR Title Format: I have confirmed that the PR title follows the correct format. (e.g., [N-2] 07-Text Splitter / 07-RecursiveCharacterTextSplitter)
Committed Files: I have ensured that no unnecessary files (e.g., .bin, .gitignore, poetry.lock, pyproject.toml) are included. These files are not allowed.
(Optional) Related Issue: If this PR is linked to an issue, I have referenced the issue number in the PR message. (e.g., Fixes Update 01-PromptTemplate.ipynb #123)
❌ Do not include unnecessary files (e.g., .bin, .gitignore, poetry.lock, pyproject.toml) or other people's code. If included, close the PR and create a new PR.
Review Template (Intial PR)
If no one reviews your PR within a few days, please @-mention one of teddylee777, musangk, BAEM1N