1부에서는 PostgreSQL을 pgVector 설정으로 다루었고, 2부에서는 OpenAI 임베딩을 사용하여 벡터 검색을 구현했습니다. 이 마지막 부분에서는 Ollama를 사용하여 로컬에서 벡터 검색을 실행하는 방법을 보여줍니다. ✨
내용물
- 컨텐츠
- 왜 올라마인가?
- Docker로 Ollama 설정
- 데이터베이스 업데이트
- 구현
- 검색어
- 성능 팁
- 문제해결
- OpenAI 대 Ollama
- 마무리
왜 올라마인가? ?
Ollama를 사용하면 다음을 통해 AI 모델을 로컬에서 실행할 수 있습니다.
- 더 나은 데이터 개인정보 보호를 위한 오프라인 운영
- API 비용 없음
- 빠른 응답 시간
OpenAI의 1536차원과 비교하여 768차원 벡터를 생성하는 Ollama의 nomic-embed-text 모델을 사용하겠습니다.
Docker로 Ollama 설정하기?
Docker 설정에 Ollama를 추가하려면 compose.yml에 다음 서비스를 추가하세요.
services: db: # ... (existing db service) ollama: image: ollama/ollama container_name: ollama-service ports: - "11434:11434" volumes: - ollama_data:/root/.ollama data_loader: # ... (existing data_loader service) environment: - OLLAMA_HOST=ollama depends_on: - db - ollama volumes: pgdata: ollama_data:
그런 다음 서비스를 시작하고 모델을 가져옵니다.
docker compose up -d # Pull the embedding model docker compose exec ollama ollama pull nomic-embed-text # Test embedding generation curl http://localhost:11434/api/embed -d '{ "model": "nomic-embed-text", "input": "Hello World" }'
데이터베이스 업데이트?
Ollama 임베딩을 저장하기 위해 데이터베이스 업데이트:
-- Connect to the database docker compose exec db psql -U postgres -d example_db -- Add a column for Ollama embeddings ALTER TABLE items ADD COLUMN embedding_ollama vector(768);
새로 설치하려면 postgres/schema.sql을 업데이트하세요.
CREATE TABLE items ( id SERIAL PRIMARY KEY, name VARCHAR(255) NOT NULL, item_data JSONB, embedding vector(1536), # OpenAI embedding_ollama vector(768) # Ollama );
구현 ?
Ollama Python 라이브러리를 설치하려면 요구사항.txt를 업데이트하세요.
ollama==0.3.3
다음은 Ollama 임베딩을 추가하기 위한 load_data.py 업데이트의 예입니다.
import ollama # New import def get_embedding_ollama(text: str): """Generate embedding using Ollama API""" response = ollama.embed( model='nomic-embed-text', input=text ) return response["embeddings"][0] def load_books_to_db(): """Load books with embeddings into PostgreSQL""" books = fetch_books() for book in books: description = ( f"Book titled '{book['title']}' by {', '.join(book['authors'])}. " f"Published in {book['first_publish_year']}. " f"This is a book about {book['subject']}." ) # Generate embeddings with both OpenAI and Ollama embedding = get_embedding(description) # OpenAI embedding_ollama = get_embedding_ollama(description) # Ollama # Store in the database store_book(book["title"], json.dumps(book), embedding, embedding_ollama)
이것은 명확성을 위해 단순화된 버전입니다. 전체 소스코드는 여기에 있습니다.
보시다시피 Ollama API 구조는 OpenAI와 유사합니다!
검색어?
Ollama 임베딩을 사용하여 유사한 항목을 검색하는 검색어:
-- View first 5 dimensions of an embedding SELECT name, (replace(replace(embedding_ollama::text, '[', '{'), ']', '}')::float[])[1:5] as first_dimensions FROM items; -- Search for books about web development: WITH web_book AS ( SELECT embedding_ollama FROM items WHERE name LIKE '%Web%' LIMIT 1 ) SELECT item_data->>'title' as title, item_data->>'authors' as authors, embedding_ollama (SELECT embedding_ollama FROM web_book) as similarity FROM items ORDER BY similarity LIMIT 3;
성능 팁?
색인 추가
CREATE INDEX ON items USING ivfflat (embedding_ollama vector_cosine_ops) WITH (lists = 100);
자원 요구 사항
- RAM: 모델의 경우 ~2GB
- 첫 번째 쿼리: 모델 로딩이 약간 지연될 것으로 예상됩니다
- 후속 쿼리: 응답 시간 ~50ms
GPU 지원
대규모 데이터세트를 처리하는 경우 GPU 지원을 통해 임베딩 생성 속도를 크게 높일 수 있습니다. 자세한 내용은 Ollama Docker 이미지를 참고하세요.
문제 해결?
연결 거부 오류
Ollama 도서관은 Ollama 서비스를 어디서 찾을 수 있는지 알아야 합니다. data_loader 서비스에서 OLLAMA_HOST 환경 변수를 설정합니다:
data_loader: environment: - OLLAMA_HOST=ollama
모델을 찾을 수 없음 오류
모델을 수동으로 당기기:
docker compose exec ollama ollama pull nomic-embed-text
또는 ollama.pull(
높은 메모리 사용량
- 올라마 서비스 재시작
- 더 작은 모델 사용을 고려해보세요
OpenAI 대 Ollama ⚖️
Feature | OpenAI | Ollama |
---|---|---|
Vector Dimensions | 1536 | 768 |
Privacy | Requires API calls | Fully local |
Cost | Pay per API call | Free |
Speed | Network dependent | ~50ms/query |
Setup | API key needed | Docker only |
마무리 하시겠습니까?
이 튜토리얼에서는 Ollama를 사용하여 로컬 벡터 검색을 설정하는 방법만 다루었습니다. 실제 애플리케이션에는 다음과 같은 추가 기능이 포함되는 경우가 많습니다.
- 쿼리 최적화 및 전처리
- 하이브리드 검색(전체 텍스트 검색과 결합)
- 웹 인터페이스와의 통합
- 보안 및 성능 고려사항
FastAPI로 구축된 간단한 API를 포함한 전체 소스 코드는 GitHub에서 확인할 수 있습니다. PR과 피드백을 환영합니다!
자원:
- 올라마 문서
- Ollama Python 라이브러리
- Ollama 임베딩 모델
질문이나 의견이 있으신가요? 아래에 댓글을 남겨주세요! ?
위 내용은 Ollama를 사용하여 벡터 검색을 구현하는 부분의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

제한된 시간에 Python 학습 효율을 극대화하려면 Python의 DateTime, Time 및 Schedule 모듈을 사용할 수 있습니다. 1. DateTime 모듈은 학습 시간을 기록하고 계획하는 데 사용됩니다. 2. 시간 모듈은 학습과 휴식 시간을 설정하는 데 도움이됩니다. 3. 일정 모듈은 주간 학습 작업을 자동으로 배열합니다.

Python은 게임 및 GUI 개발에서 탁월합니다. 1) 게임 개발은 Pygame을 사용하여 드로잉, 오디오 및 기타 기능을 제공하며 2D 게임을 만드는 데 적합합니다. 2) GUI 개발은 Tkinter 또는 PYQT를 선택할 수 있습니다. Tkinter는 간단하고 사용하기 쉽고 PYQT는 풍부한 기능을 가지고 있으며 전문 개발에 적합합니다.

Python은 데이터 과학, 웹 개발 및 자동화 작업에 적합한 반면 C는 시스템 프로그래밍, 게임 개발 및 임베디드 시스템에 적합합니다. Python은 단순성과 강력한 생태계로 유명하며 C는 고성능 및 기본 제어 기능으로 유명합니다.

2 시간 이내에 Python의 기본 프로그래밍 개념과 기술을 배울 수 있습니다. 1. 변수 및 데이터 유형을 배우기, 2. 마스터 제어 흐름 (조건부 명세서 및 루프), 3. 기능의 정의 및 사용을 이해하십시오. 4. 간단한 예제 및 코드 스 니펫을 통해 Python 프로그래밍을 신속하게 시작하십시오.

Python은 웹 개발, 데이터 과학, 기계 학습, 자동화 및 스크립팅 분야에서 널리 사용됩니다. 1) 웹 개발에서 Django 및 Flask 프레임 워크는 개발 프로세스를 단순화합니다. 2) 데이터 과학 및 기계 학습 분야에서 Numpy, Pandas, Scikit-Learn 및 Tensorflow 라이브러리는 강력한 지원을 제공합니다. 3) 자동화 및 스크립팅 측면에서 Python은 자동화 된 테스트 및 시스템 관리와 같은 작업에 적합합니다.

2 시간 이내에 파이썬의 기본 사항을 배울 수 있습니다. 1. 변수 및 데이터 유형을 배우십시오. 이를 통해 간단한 파이썬 프로그램 작성을 시작하는 데 도움이됩니다.

10 시간 이내에 컴퓨터 초보자 프로그래밍 기본 사항을 가르치는 방법은 무엇입니까? 컴퓨터 초보자에게 프로그래밍 지식을 가르치는 데 10 시간 밖에 걸리지 않는다면 무엇을 가르치기로 선택 하시겠습니까?

Fiddlerevery Where를 사용할 때 Man-in-the-Middle Reading에 Fiddlereverywhere를 사용할 때 감지되는 방법 ...


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

VSCode Windows 64비트 다운로드
Microsoft에서 출시한 강력한 무료 IDE 편집기

드림위버 CS6
시각적 웹 개발 도구

WebStorm Mac 버전
유용한 JavaScript 개발 도구

안전한 시험 브라우저
안전한 시험 브라우저는 온라인 시험을 안전하게 치르기 위한 보안 브라우저 환경입니다. 이 소프트웨어는 모든 컴퓨터를 안전한 워크스테이션으로 바꿔줍니다. 이는 모든 유틸리티에 대한 액세스를 제어하고 학생들이 승인되지 않은 리소스를 사용하는 것을 방지합니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경
