이 노트북은 Google Drive에서 문서를 검색하는 방법을 다룹니다.

Prerequisites

  1. Google Cloud 프로젝트를 생성하거나 기존 프로젝트를 사용합니다
  2. Google Drive API를 활성화합니다
  3. 데스크톱 앱용 자격 증명 승인을 수행합니다
  4. pip install -U google-api-python-client google-auth-httplib2 google-auth-oauthlib

Retrieve the Google Docs

기본적으로 GoogleDriveRetrievercredentials.json 파일이 ~/.credentials/credentials.json에 있을 것으로 예상하지만, 이는 GOOGLE_ACCOUNT_FILE 환경 변수를 사용하여 구성할 수 있습니다. token.json의 위치는 동일한 디렉토리를 사용합니다(또는 token_path 매개변수를 사용). token.json은 retriever를 처음 사용할 때 자동으로 생성됩니다. GoogleDriveRetriever는 몇 가지 요청으로 파일 선택을 검색할 수 있습니다. 기본적으로 folder_id를 사용하면 이 폴더 내의 모든 파일을 Document로 검색할 수 있습니다. URL에서 폴더 및 문서 id를 얻을 수 있습니다: 특수 값 root는 개인 홈을 나타냅니다.
from langchain_googledrive.retrievers import GoogleDriveRetriever

folder_id = "root"
# folder_id='1yucgL9WGgWZdM1TOuKkeghlPizuzMYb5'

retriever = GoogleDriveRetriever(
    num_results=2,
)
기본적으로 다음 MIME type을 가진 모든 파일을 Document로 변환할 수 있습니다.
  • text/text
  • text/plain
  • text/html
  • text/csv
  • text/markdown
  • image/png
  • image/jpeg
  • application/epub+zip
  • application/pdf
  • application/rtf
  • application/vnd.google-apps.document (GDoc)
  • application/vnd.google-apps.presentation (GSlide)
  • application/vnd.google-apps.spreadsheet (GSheet)
  • application/vnd.google.colaboratory (Notebook colab)
  • application/vnd.openxmlformats-officedocument.presentationml.presentation (PPTX)
  • application/vnd.openxmlformats-officedocument.wordprocessingml.document (DOCX)
이를 업데이트하거나 사용자 정의할 수 있습니다. GoogleDriveRetriever의 문서를 참조하세요. 단, 해당 패키지가 설치되어 있어야 합니다.
pip install -qU  unstructured
retriever.invoke("machine learning")
파일을 선택하는 기준을 사용자 정의할 수 있습니다. 미리 정의된 필터 세트가 제공됩니다:
TemplateDescription
gdrive-all-in-folderfolder_id에서 모든 호환 가능한 파일 반환
gdrive-query모든 드라이브에서 query 검색
gdrive-by-name이름이 query인 파일 검색
gdrive-query-in-folderfolder_id에서 query 검색 (_recursive=true인 경우 하위 폴더 포함)
gdrive-mime-type특정 mime_type 검색
gdrive-mime-type-in-folderfolder_id에서 특정 mime_type 검색
gdrive-query-with-mime-type특정 mime_type으로 query 검색
gdrive-query-with-mime-type-and-folder특정 mime_typefolder_id에서 query 검색
retriever = GoogleDriveRetriever(
    template="gdrive-query",  # Search everywhere
    num_results=2,  # But take only 2 documents
)
for doc in retriever.invoke("machine learning"):
    print("---")
    print(doc.page_content.strip()[:60] + "...")
또는 특수화된 PromptTemplate으로 프롬프트를 사용자 정의할 수 있습니다.
from langchain_core.prompts import PromptTemplate

retriever = GoogleDriveRetriever(
    template=PromptTemplate(
        input_variables=["query"],
        # See https://developers.google.com/drive/api/guides/search-files
        template="(fullText contains '{query}') "
        "and mimeType='application/vnd.google-apps.document' "
        "and modifiedTime > '2000-01-01T00:00:00' "
        "and trashed=false",
    ),
    num_results=2,
    # See https://developers.google.com/drive/api/v3/reference/files/list
    includeItemsFromAllDrives=False,
    supportsAllDrives=False,
)
for doc in retriever.invoke("machine learning"):
    print(f"{doc.metadata['name']}:")
    print("---")
    print(doc.page_content.strip()[:60] + "...")

Use Google Drive ‘description’ metadata

각 Google Drive는 메타데이터에 description 필드를 가지고 있습니다(파일의 세부 정보 참조). 선택한 파일의 description을 반환하려면 snippets 모드를 사용하세요.
retriever = GoogleDriveRetriever(
    template="gdrive-mime-type-in-folder",
    folder_id=folder_id,
    mime_type="application/vnd.google-apps.document",  # Only Google Docs
    num_results=2,
    mode="snippets",
    includeItemsFromAllDrives=False,
    supportsAllDrives=False,
)
retriever.invoke("machine learning")

Connect these docs programmatically to Claude, VSCode, and more via MCP for real-time answers.
I