이 리포지토리에는 사용자와 고객이 필요한 정보를 얻거나 복잡한 작업을 수행하는 데 도움이 되는 여러 Alfresco AI Assistant가 포함되어 있으며 각 요청을 자연 언어를 통해 전달하기만 하면 됩니다.
데모에서 무슨 일이 일어나고 있는지에 대한 "비하인드 스토리" 설명을 보려면 Behind_the_scenes.md를 참조하세요.
이 저장소에는 다음 애플리케이션이 포함되어 있습니다.
이름 | 주요 파일 | 이름 작성 | URL | 설명 |
---|---|---|---|---|
야외 문서 봇 | alfresco_docs_bot.py | alfresco_docs_bot | http://localhost:8503 | Alfresco 문서를 섭취하고 질문하세요. |
야외 AI 어시스턴트 | alfresco_ai_assistant.py | alfresco_ai_assistant | http://localhost:8504 | 자연어 요청을 사용하여 Alfresco Content Services 인스턴스와 상호 작용합니다. |
데이터베이스는 http://localhost:7474에서 탐색할 수 있습니다.
그래프 결핵
사용자(사용자 ?)
ㅋㅋㅋ(LLM ?)
벡터db[(벡터 데이터베이스)]
원시 문서{{원시 문서 }}
사용자 --query-embedded-data--> 벡터db
벡터DB --관련 데이터--> llm
llm --최종 답변--> 사용자
raw-docs --추출/청킹/임베딩---> 벡터DB
액세스할 수 있는 곳 :
특징 :
그래프 BT
사용자(사용자 ?)
ㅋㅋㅋ(LLM ?)
API
하위 그래프 api[API ?]
발견 API
검색 API
노드 API
끝
하위 그래프 도구[도구]
발견
변환
수정하다
끝
사용자 --query--> llm
llm --선택--> 도구
도구 --invoke--> API
api --피드 데이터--> llm
llm --최종 답변--> 사용자
액세스할 수 있는 곳 :
특징 :
환경 템플릿 파일 env.example
에서 .env
파일을 생성합니다.
사용 가능한 변수:
변수 이름 | 기본값 | 설명 |
---|---|---|
ALFRESCO_URL | http://localhost:8080 | 필수 - ACS 인스턴스에 대한 기본 URL |
ALFRESCO_USERNAME | 관리자 | 필수 - ACS 인스턴스의 사용자 이름 |
ALFRESCO_PASSWORD | 관리자 | 필수 - ACS 인스턴스의 비밀번호 |
OLLAMA_BASE_URL | http://host.docker.internal:11434 | 필수 - Ollama LLM API에 대한 URL |
NEO4J_URI | neo4j://데이터베이스:7687 | 필수 - Neo4j 데이터베이스에 대한 URL |
NEO4J_USERNAME | neo4j | 필수 - Neo4j 데이터베이스의 사용자 이름 |
NEO4J_PASSWORD | 비밀번호 | 필수 - Neo4j 데이터베이스의 비밀번호 |
법학대학원 | 라마3 | 필수 - Ollama 모델 태그, gpt-4, gpt-3.5 또는 claudev2일 수 있습니다. |
EMBEDDING_MODEL | 문장_변압기 | 필수 - 문장_변환기, openai, aws, ollama 또는 google-genai-embedding-001일 수 있습니다. |
AWS_ACCESS_KEY_ID | 필수 - LLM=claudev2 또는 embedding_model=aws인 경우에만 해당 | |
AWS_SECRET_ACCESS_KEY | 필수 - LLM=claudev2 또는 embedding_model=aws인 경우에만 해당 | |
AWS_DEFAULT_REGION | 필수 - LLM=claudev2 또는 embedding_model=aws인 경우에만 해당 | |
OPENAI_API_KEY | 필수 - LLM=gpt-4, LLM=gpt-3.5 또는 embedding_model=openai인 경우에만 해당 | |
GOOGLE_API_KEY | 필수 - GoogleGenai LLM을 사용하거나 google-genai-embedding-001 모델을 삽입하는 경우에만 필요합니다. | |
LANGCHAIN_ENDPOINT | "https://api.smith.langchain.com" | 선택 사항 - Langchain Smith API에 대한 URL |
LANGCHAIN_TRACING_V2 | 거짓 | 선택 사항 - Langchain 추적 v2 활성화 |
LANGCHAIN_PROJECT | 선택 사항 - Langchain 프로젝트 이름 | |
LANGCHAIN_API_KEY | 선택 사항 - Langchain API 키 |
경고
애플리케이션은 Ollama, 특히 llama3에서만 테스트되었으며 다른 LLM과의 작동이 보장되지 않습니다.
Ollama를 수동으로 설치할 필요가 없습니다. Linux 프로필을 사용하여 실행할 때 스택의 일부로 컨테이너에서 실행됩니다. docker compose --profile linux up
실행하세요. Ollama docker 컨테이너를 사용할 때 .env
파일에 OLLAMA_BASE_URL=http://llm:11434
설정해야 합니다.
Linux-GPU 프로필을 사용하려면 docker compose --profile linux-gpu up
실행하세요. 또한 .env
파일에서 OLLAMA_BASE_URL=http://llm-gpu:11434
변경하세요.
어떤 이유로든 Ollama 컨테이너를 실행할 수 없는 경우 대체 옵션으로 이를 설치하고 로컬로 실행할 수 있습니다.
저렴한 GPU 또는 CPU에서 실행 중인 경우 commons.py에서
num_ctx
3072
로 줄이는 것이 좋습니다.
Ollama를 로컬로 실행하면 결과가 느려질 수 있습니다. 가능한 해결책은 소비자급 GPU보다 성능이 뛰어난 저렴한 GPU 지원 EC2 인스턴스에서 실행하는 것입니다.
단일 g4dn.xlarge
인스턴스로 지원되는 EKS 클러스터를 생성하려면 다음 안내를 따르세요.
eksctl create cluster --name hack-turing-titans --node-type=g4dn.xlarge --nodes 1
https를 통해 ollama를 노출하려면 ingress-nginx 및 cert-manager를 설치하십시오.
helm upgrade --install ingress-nginx ingress-nginx
--repo https://kubernetes.github.io/ingress-nginx
--namespace ingress-nginx --create-namespace
helm install
cert-manager jetstack/cert-manager
--namespace cert-manager
--create-namespace
--set installCRDs=true
ingress-nginx 수신 CNAME을 가리키는 DNS 레코드를 수동으로 생성합니다( kubectl get service -n ingress-nginx
통해 검색).
FQDN을 설정하고 ClusterIssuer 리소스를 적용하여 LetsEncrypt 인증서 생성을 활성화합니다.
sed -i ' s/my-ollama.example.com/YOUR_FQDN/g ' k8s/letsencrypt-prod.yaml
kubectl apply -f k8s/letsencrypt-prod.yaml
마지막으로 Ollama 차트를 설치합니다.
helm install ollama ollama-helm/ollama
--namespace ollama
--create-namespace
--values ollama.yaml
경고
Docker Desktop 4.24.x
릴리스에는 Python 애플리케이션에 영향을 미치는 성능 문제가 있습니다. 이 스택을 사용하기 전에 최신 릴리스로 업그레이드하십시오.
모든 것을 시작하려면
docker compose up
빌드 스크립트가 변경된 경우 다시 빌드하세요 .
docker compose up --build
감시 모드 로 전환합니다(파일 변경 시 자동 재구축). 먼저 모든 것을 시작한 다음 새 터미널에서:
docker compose watch
종료 상태 확인이 실패하거나 컨테이너가 예상대로 시작되지 않으면 완전히 종료하여 다시 시작하세요.
docker compose down
애플리케이션이 올바르게 실행되도록 데이터를 준비하는 데 필요할 수 있는 스크립트는 모두 ./scripts에서 찾을 수 있습니다.
Transformer.py는 Alfresco Docs 봇에 대해 예상되는 모든 문서가 포함된 initial-load
폴더를 생성하기 위해 docs-alfresco 저장소의 로컬 복제본에 대해 실행해야 하는 스크립트입니다.
이 프로젝트는 docker/genai-stack을 기반으로 하며 Turing Titans 팀이 Hyland에서 3일간 진행한 내부 해커톤의 결과입니다.