Bahagian 1 meliputi PostgreSQL dengan persediaan pgvector dan Bahagian 2 melaksanakan carian vektor menggunakan pembenaman OpenAI. Bahagian akhir ini menunjukkan cara menjalankan carian vektor secara setempat menggunakan Ollama! ✨
Kandungan
- Kandungan
- Kenapa Ollama?
- Menyediakan Ollama dengan Docker
- Kemas Kini Pangkalan Data
- Pelaksanaan
- Pertanyaan Carian
- Petua Prestasi
- Menyelesaikan masalah
- OpenAI lwn. Ollama
- Selesaikan
Kenapa Ollama? ?
Ollama membolehkan anda menjalankan model AI secara setempat dengan:
- Pengendalian luar talian untuk privasi data yang lebih baik
- Tiada kos API
- Masa respons yang pantas
Kami akan menggunakan model nomic-embed-text dalam Ollama, yang mencipta vektor 768 dimensi (berbanding dengan 1536 dimensi OpenAI).
Menyediakan Ollama dengan Docker ?
Untuk menambahkan Ollama pada persediaan Docker anda, tambahkan perkhidmatan ini ke 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:
Kemudian, mulakan perkhidmatan dan tarik model:
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" }'
Kemas Kini Pangkalan Data ?
Kemas kini pangkalan data untuk menyimpan benam 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);
Untuk pemasangan baharu, kemas kini 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 );
Perlaksanaan ?
Kemas kini requirements.txt untuk memasang pustaka Ollama Python:
ollama==0.3.3
Berikut ialah contoh kemas kini untuk load_data.py untuk menambah benam Ollama:
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)
Perhatikan bahawa ini ialah versi ringkas untuk kejelasan. Kod sumber penuh ada di sini.
Seperti yang anda lihat, struktur API Ollama adalah serupa dengan OpenAI!
Pertanyaan Carian ?
Pertanyaan carian untuk mendapatkan semula item yang serupa menggunakan benam 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;
Petua Prestasi ?
Tambah Indeks
CREATE INDEX ON items USING ivfflat (embedding_ollama vector_cosine_ops) WITH (lists = 100);
Keperluan Sumber
- RAM: ~2GB untuk model
- Pertanyaan pertama: Jangkakan sedikit kelewatan untuk pemuatan model
- Pertanyaan seterusnya: ~50ms masa tindak balas
Sokongan GPU
Jika memproses set data yang besar, sokongan GPU boleh mempercepatkan penjanaan pembenaman. Untuk butiran, rujuk imej Ollama Docker.
Menyelesaikan masalah ?
Ralat Sambungan Ditolak
Perpustakaan Ollama perlu tahu di mana untuk mencari perkhidmatan Ollama. Tetapkan pembolehubah persekitaran OLLAMA_HOST dalam perkhidmatan data_loader:
data_loader: environment: - OLLAMA_HOST=ollama
Ralat Model Tidak Ditemui
Tarik model secara manual:
docker compose exec ollama ollama pull nomic-embed-text
Sebagai alternatif, anda boleh menambah skrip untuk menarik model secara automatik dalam kod Python anda menggunakan fungsi ollama.pull(
Penggunaan Memori Tinggi
- Mulakan semula perkhidmatan Ollama
- Pertimbangkan untuk menggunakan model yang lebih kecil
OpenAI lwn. 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 |
Bungkus?
Tutorial ini hanya merangkumi cara menyediakan carian vektor tempatan dengan Ollama. Aplikasi dunia nyata selalunya termasuk ciri tambahan seperti:
- Pengoptimuman pertanyaan dan prapemprosesan
- Carian hibrid (menggabungkan dengan carian teks penuh)
- Integrasi dengan antara muka web
- Pertimbangan keselamatan dan prestasi
Kod sumber penuh, termasuk API ringkas yang dibina dengan FastAPI, tersedia di GitHub. PR dan maklum balas adalah dialu-alukan!
Sumber:
- Dokumentasi Ollama
- Perpustakaan Ollama Python
- Model Pembenaman Ollama
Soalan atau maklum balas? Tinggalkan komen di bawah! ?
Atas ialah kandungan terperinci Bahagian Melaksanakan Carian Vektor dengan Ollama. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Python cemerlang dalam permainan dan pembangunan GUI. 1) Pembangunan permainan menggunakan pygame, menyediakan lukisan, audio dan fungsi lain, yang sesuai untuk membuat permainan 2D. 2) Pembangunan GUI boleh memilih tkinter atau pyqt. TKInter adalah mudah dan mudah digunakan, PYQT mempunyai fungsi yang kaya dan sesuai untuk pembangunan profesional.

Python sesuai untuk sains data, pembangunan web dan tugas automasi, manakala C sesuai untuk pengaturcaraan sistem, pembangunan permainan dan sistem tertanam. Python terkenal dengan kesederhanaan dan ekosistem yang kuat, manakala C dikenali dengan keupayaan kawalan dan keupayaan kawalan yang mendasari.

Anda boleh mempelajari konsep pengaturcaraan asas dan kemahiran Python dalam masa 2 jam. 1. Belajar Pembolehubah dan Jenis Data, 2.

Python digunakan secara meluas dalam bidang pembangunan web, sains data, pembelajaran mesin, automasi dan skrip. 1) Dalam pembangunan web, kerangka Django dan Flask memudahkan proses pembangunan. 2) Dalam bidang sains data dan pembelajaran mesin, numpy, panda, scikit-learn dan perpustakaan tensorflow memberikan sokongan yang kuat. 3) Dari segi automasi dan skrip, Python sesuai untuk tugas -tugas seperti ujian automatik dan pengurusan sistem.

Anda boleh mempelajari asas -asas Python dalam masa dua jam. 1. Belajar pembolehubah dan jenis data, 2. Struktur kawalan induk seperti jika pernyataan dan gelung, 3 memahami definisi dan penggunaan fungsi. Ini akan membantu anda mula menulis program python mudah.

Bagaimana Mengajar Asas Pengaturcaraan Pemula Komputer Dalam masa 10 jam? Sekiranya anda hanya mempunyai 10 jam untuk mengajar pemula komputer beberapa pengetahuan pengaturcaraan, apa yang akan anda pilih untuk mengajar ...

Cara mengelakkan dikesan semasa menggunakan fiddlerevery di mana untuk bacaan lelaki-dalam-pertengahan apabila anda menggunakan fiddlerevery di mana ...

Memuatkan Fail Pickle di Python 3.6 Kesalahan Laporan Alam Sekitar: ModulenotFoundError: Nomodulenamed ...


Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Versi Mac WebStorm
Alat pembangunan JavaScript yang berguna

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

DVWA
Damn Vulnerable Web App (DVWA) ialah aplikasi web PHP/MySQL yang sangat terdedah. Matlamat utamanya adalah untuk menjadi bantuan bagi profesional keselamatan untuk menguji kemahiran dan alatan mereka dalam persekitaran undang-undang, untuk membantu pembangun web lebih memahami proses mengamankan aplikasi web, dan untuk membantu guru/pelajar mengajar/belajar dalam persekitaran bilik darjah Aplikasi web keselamatan. Matlamat DVWA adalah untuk mempraktikkan beberapa kelemahan web yang paling biasa melalui antara muka yang mudah dan mudah, dengan pelbagai tahap kesukaran. Sila ambil perhatian bahawa perisian ini

Muat turun versi mac editor Atom
Editor sumber terbuka yang paling popular

Dreamweaver CS6
Alat pembangunan web visual