온프레미스 서버에서 오픈소스로 문서 관리 체계 구축하기 (PostgreSQL 버전)

Published by

on

AI 에이전트를 회사에서 활용하다 보면 문서 관리가 가장 큰 과제다. 매번 복사·붙여넣기 하는 방식은 오래 가지 못한다. 이번 글에서는 무료 오픈소스 도구만 활용해, 팀원들이 쉽게 사용할 수 있는 문서 관리 체계를 온프레미스 환경에서 구축하는 방법을 PostgreSQL 데이터베이스 기반으로 정리한다.


필요한 구성 요소

  • 문서 저장소: Nextcloud (DB: PostgreSQL)
  • 검색·Q&A 엔진: LangChain + FAISS, 혹은 Haystack
  • Agent 연동: DocAI-MCP (Gradio UI 제공)
  • 데이터 자동화: Scrapy(웹 크롤링), Airbyte CE(ETL)

구축 과정

1. 서버 준비

Ubuntu 서버를 기준으로 설명한다.

sudo apt update && sudo apt upgrade -y
sudo apt install docker.io docker-compose -y
sudo apt install python3-pip -y

2. 문서 저장소 (Nextcloud + PostgreSQL)

Nextcloud를 PostgreSQL과 함께 구성한다.

docker-compose.yml 예시:

version: '3'

services:
  db:
    image: postgres:15
    restart: always
    volumes:
      - db:/var/lib/postgresql/data
    environment:
      - POSTGRES_USER=nextcloud
      - POSTGRES_PASSWORD=example
      - POSTGRES_DB=nextcloud

  app:
    image: nextcloud
    restart: always
    ports:
      - 8080:80
    volumes:
      - nextcloud:/var/www/html
    environment:
      - POSTGRES_PASSWORD=example
      - POSTGRES_DB=nextcloud
      - POSTGRES_USER=nextcloud
      - POSTGRES_HOST=db

volumes:
  db:
  nextcloud:

실행:

docker-compose up -d

브라우저에서 http://서버IP:8080 접속 → 관리자 계정 생성


3. 검색·Q&A 파이프라인

LangChain과 FAISS를 설치해 문서를 벡터화하고 검색 가능하게 만든다.

pip install langchain faiss-cpu openai

간단한 코드 예시:

from langchain.text_splitter import CharacterTextSplitter
from langchain.vectorstores import FAISS
from langchain.embeddings.openai import OpenAIEmbeddings
from langchain.chains import RetrievalQA
from langchain.llms import OpenAI

with open("sample.txt") as f:
    text = f.read()

splitter = CharacterTextSplitter(chunk_size=500, chunk_overlap=50)
docs = splitter.split_text(text)

embeddings = OpenAIEmbeddings()
db = FAISS.from_texts(docs, embeddings)

qa = RetrievalQA.from_chain_type(
    llm=OpenAI(),
    retriever=db.as_retriever()
)

print(qa.run("이 문서의 핵심 요약은?"))

4. Agent 연동

DocAI-MCP를 설치하고 Ollama + Mistral 같은 무료 모델을 연결한다.

git clone https://github.com/your-org/docai-mcp.git
cd docai-mcp
pip install -r requirements.txt
python app.py

실행하면 Gradio UI가 뜨고, 브라우저에서 문서를 업로드해 바로 요약·Q&A를 할 수 있다.


5. 데이터 자동 업데이트

  • Scrapy: 웹 크롤링으로 최신 보고서/뉴스 자동 수집
  • Airbyte CE: 외부 DB/서비스 데이터를 주기적으로 가져와 문서 저장소에 반영

6. 팀원 사용 방식

  1. 브라우저에서 Nextcloud 접속 → 문서 업로드
  2. Agent UI(Gradio)에서 검색·요약·Q&A 요청
  3. 결과를 Slack/Teams 같은 협업 툴에 공유

마무리

이 체계를 구축하면 팀원들은 단순히 문서를 올리고 질문만 던지면 된다. Agent가 알아서 검색하고 요약해주니 업무 효율이 크게 올라간다. 무엇보다 모든 과정이 무료 오픈소스 기반이라 비용 부담 없이 회사 내부에서 안전하게 운영할 수 있다. PostgreSQL을 사용하면 안정성과 확장성 면에서도 유리하다.

댓글 남기기

오픈바이브 | oftenvibe.com에서 더 알아보기

지금 구독하여 계속 읽고 전체 아카이브에 액세스하세요.

계속 읽기