섹션6장 .chroma/esl_topics폴더에 관하여
61
投稿した質問数 2
안녕하세요.
좋은 강의 항상 감사드립니다.
한 가지 문의드리고 싶습니다.
섹션 6의 28강에서 RAG 실행 부분을 실습하던 중,
제 로컬 환경에서는 코드가 에러 없이 정상적으로 실행되었지만.chroma/esl_topics 폴더가 생성되지 않는 현상이 발생했습니다.
코드 상으로는 os.makedirs(PERSIST_DIR, exist_ok=True) 구문이 있으므로
폴더가 자동으로 생성될 것으로 예상했는데, 실제로는 생성되지 않는 것 같습니다.
혹시 해당 폴더가 생성되는 정확한 경로를 알려주실 수 있을까요?
또는 Windows 환경에서는 위 코드로 폴더가 생성되지 않는 경우가 있는지도 궁금합니다.
확인 부탁드립니다.
감사합니다.

import os
from typing import Type, Optional
from crewai.tools import BaseTool
from pydantic import BaseModel, Field
from env import OPENAI_API_KEY
from langchain_community.vectorstores import Chroma
from langchain_openai import OpenAIEmbeddings, ChatOpenAI
from langchain_community.document_loaders import PyPDFLoader
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain.chains import RetrievalQA
os.environ["OPENAI_API_KEY"] = OPENAI_API_KEY
PDF_FILENAME = os.path.join("knowledge", "29ESLConversationTopic.pdf")
PERSIST_DIR = os.path.join(".chroma", "esl_topics")
def qa(question):
os.makedirs(PERSIST_DIR, exist_ok=True)
embeddings = OpenAIEmbeddings()
try:
has_index = bool(os.listdir(PERSIST_DIR))
except FileNotFoundError:
has_index = False
if has_index:
vectordb = Chroma(persist_directory=PERSIST_DIR, embedding_function=embeddings)
else:
loader = PyPDFLoader(PDF_FILENAME)
docs = loader.load()
splitter = RecursiveCharacterTextSplitter(chunk_size=800, chunk_overlap=100)
chunks = splitter.split_documents(docs)
vectordb = Chroma.from_documents(chunks, embeddings, persist_directory=PERSIST_DIR)
retriever = vectordb.as_retriever(search_kwargs={"k": 3})
llm = ChatOpenAI(model="gpt-4o-mini",temperature=0.3)
return RetrievalQA.from_chain_type(llm=llm, chain_type="stuff", retriever=retriever).run(question)
class RAGToolInput(BaseModel):
question: str = Field(description="질문")
class RAGTool(BaseTool):
name: str = "ESL_Chroma_RAG"
description: str = "Retrieves from '29 ESL Conversation Topics' PDF via ChromaDB and answers questions."
args_schema: Type[BaseModel] = RAGToolInput
def _run(self, question: str):
try:
return qa(question)
except Exception as e:
return str(e)
rag_tool = RAGTool()
回答 1
0
안녕하세요
PERSIST_DIR = os.path.join(".chroma", "esl_topics") 는 현재 작업 디렉토리(cwd) 기준인데 터미널/IDE/노트북에 따라 cwd가 프로젝트 루트가 아닐 수도 있습니다. (물론 강의처럼 루트 경로에서 실행하면 이슈가 없을 것 같긴 한데.. 정확한 원인은 파악이 어렵네요..)
아래 코드로 변경해주시고, 안되신다면 print된 부분을 공유해주시면 더 도움을 드리겠습니다.
아래 코드는 참고로 실행 중인 스크립트 파일 기준(프로젝트 내부 고정 경로)으로 찍는 방법입니다.
from pathlib import Path
...
BASE_DIR = Path(__file__).resolve().parent
PDF_FILENAME = BASE_DIR / "knowledge" / "29ESLConversationTopic.pdf"
PERSIST_DIR = BASE_DIR / ".chroma" / "esl_topics"
...
PERSIST_DIR.mkdir(parents=True, exist_ok=True)
print("CWD :", Path.cwd())
print("__file__ base:", BASE_DIR)
print("PERSIST_DIR :", PERSIST_DIR.resolve())
print("Exists? :", PERSIST_DIR.exists())
질문있습니다~
0
25
1
firestore query 문제
0
36
0
구글 검색엔진 만들기 중 [전체 웹 검색] 안보임
0
44
1
마지막 부분이 이해가 안됩니다.
0
65
1
Trace Batch Finalization 부분이 출력되지 않습니다
1
53
1
SIGHUP 에러
0
70
1
Trace Batch Finalization 이 부분이 출력되지않는데요.
1
74
2
아래문의 답에 답글로도 달았는데 답이없으셔서 다시 남깁니다.
0
77
2
yaml 파일을 계속 찾으면서 에러가 띄네요!
0
84
2
dynamic_agent가 없어도 괜찮지 않나요?
0
62
2
firestore database 위치에 서울이 없습니다.
0
110
2
firecrawl 사용해서 구현했는데 Url정보를 포함하지 않습니다.
0
88
1
봇 계속 실행
0
104
2
야후에서 정보를 못얻어와요.
0
77
2
가상환경 세팅이 잘 되지 않습니다 ㅠㅠ
0
103
2
flow.plot() 그래프 시각화가 돼지 않네요
0
93
3
발급 받은 토큰이 서버에서 거절되었다고 나와요.
0
85
2
english tutor 관련 langchain 임포트 에러
1
178
3
.\.venv\Scripts\activate 어디다가 입력해야 하나요?
0
125
3
main.py 눌러도 안떠요
0
82
2
보충강의 잘못올리신거 같아요
0
74
1
12:32 반응이 없는데 왜그런거죠?
0
51
2
10:40 이 부분이 저는 안떠요
0
54
2
5:46 저 부분이 안보이는데
0
46
1

