स्वयं-आयोजित Perplexica - साथ ही Ollama के साथ

क्या आपलोग लॉकल में Copilot-स्टाइल सर्विस चलाना चाहते हैं? बहुत आसान!

Page content

यह बहुत दिलचस्प है! ऐसे कोपाइलट (copilot) या पर्फ़्लेक्सिटी.एआई (perplexity.ai) जैसे सेवाओं को नामकरण देते हुए, और दुनिया को बताते हुए आप क्या चाहते हैं, आप अब इस प्रकार की सेवाओं को खुद के पीसी (PC) या लैपटॉप (laptop) पर आज़माई कर सकते हैं!

यह क्या है

पर्फ़्लेक्सिका (Perplexica) कोपाइलट और पर्फ़्लेक्सिटी.एआई जैसे प्रणालियों के समान एक प्रणाली है।

  • आप एक प्रश्न पूछते हैं
  • AI इंटरनेट पर उसका जवाब ढूंढता है (आप स्पष्ट कर सकते हैं: एक्सेमेटिक पेपर्स, लेखन, YouTube, Reddit…)
  • फिर AI उसके पास मिले सभी जानकारी का सारांश (summary) देता है
  • फिर वह अनुवादित जवाबों के साथ, मूल web sites के संदर्भ (references) प्रस्तुत करता है
  • और दायरे में एक फ़िक्स (fix) आइकन पर क्लिक करने से, अगर आप थोड़ा ज्यादा विषय की खोज में हैं

वे प्रणालियाँ (systems) क्लाउड (cloud) में ठहरी हुई हैं और कुछ कंपनियों (corporations) का सम्बन्धी हैं (उदाहरण के लिए, Microsoft या Meta) पर्फ़्लेक्सिका एक Open Source software है जो आप खुद के पीसी या सक्षम लैपटॉप (powerful laptop) पर ठहरा सकते हैं।

perplexica response with llama3.1 8b q6 and jina embeddings यहाँ हम देख रहे हैं कि पर्फ़्लेक्सिका (Perplexica) Chat model llama3.1 8b q6 और jina Embedding model के साथ - विकल्पों के साथ - जवाब देती है, प्रश्न Who is Elon Musk? (एलन मस्क कौन है?) के लिए।

पर्फ़्लेक्सिका कई संदर्भों में विभाजित (consist of) है:

  1. सर्च इंजन SearxNG - यह 10+ अन्य सर्च इंजनों को बुला के परिणाम मिलवेगा, तो perplexica उन्हें संयोजित (combine) कर सकती है। SearxNG खुद के लिए बहुत प्रभावी (configurable) है, आप हर इंजन चेक कर सकते हैं और नए जोड़ सकते हैं। लेकिन हमारे उद्देश्यों के लिए, डिफ़ाउल्ट (default) कनфिगरेशन अच्छी तरह से काम करता है।
  2. पर्फ़्लेक्सिका बैकएंड (Backend) और फ्रंटेंड (Frontend) - तकनीकी रूप से ये दो सेरमान प्रणालियाँ हैं, एक API प्रदान करता है, दूसरा UI है।
  3. Ollama Service - यह perplexica प्रोजेक्ट (project) का अनुभाग नहीं है, लेकिन अगर आप खुद के LLMs को लोकली (locally) ठहराना चाहते हैं, तो Ollama उन्हें इस्तेमाल करने का एकमात्र तरीका है।

इस प्रणाली (system) के सभी विन्यासन (installation) में, दो बड़े चरण (steps) हैं:

  1. Ollama इंस्टाल करें + Ollama models डाउनलोड करें
  2. Perplexica को साथ में SearxNG के साथ इंस्टाल करें

Ollama का इंस्टाल करना

Ollama को शुरू करने के लिए, निम्नलिखित स्वैच्छिक (steps) पालें:

Ollama को इंस्टाल करते हुए स्क्रिप्ट चलाएँ:

curl -fsSL https://ollama.com/install.sh | sh

अपना पसंदीड़ LLM डाउनलोड करने के लिए, Ollama को सूचित करें। अगर आपका पसंदीड़ llama3.1 8b q4 है - फिर स्क्रिप्ट चलाएँ:

ollama pull llama3.1:latest

Nomic-Embed-Text को llama3.1 के बजाय (if) आपका पसंदीड़ embedding model है - तो उसे डाउनलोड करें:

ollama pull nomic-embed-text:latest

Ollama सर्विस (service) फाइल का संपादन करते हुए, निम्नलिखित स्वैच्छिक (command) चलाएँ:

sudo systemctl edit ollama.service

उसको नेटवर्क (network) पर उपलब्ध करने (expose to network) के लिए, यह संभावित (possible) है:

[Service]
Environment="OLLAMA_HOST=0.0.0.0"

सिस्टेड डेमोन (systemd daemon) को रिलोड करें और Ollama सर्विस (service) को restart करें:

sudo systemctl daemon-reload
sudo systemctl restart ollama

पाठ्यक्रम (check that Ollama started successfully)

systemctl status ollama.service
sudo journalctl -u ollama.service --no-pager

Ollama के इंस्टाल, अद्यतन (update) और सेवा प्रणाली (configuration) को देखने के लिए, निम्नलिखित लिंक पर जाएँ: Install and configure Ollama

Ollama के साथ पर्फ़्लेक्सिका को इस्तेमाल करने (using other Ollama models with Perplexica) के विषय पर अधिक जानकारी के लिए, कृपया निचले भाग में ‘Installing other Ollama models’ सेक्शन देखें।

पर्फ़्लेक्सिका का इंस्टाल

मैं डॉक्युअर (Docker) में पर्फ़्लेक्सिका को लिनक्स पर ठहराया है, लेकिन विन्दुओं (dots) से बदलकर, आप डॉक्युअर-कम्पोज़ (docker-compose) का इस्तेमाल विंडोज़ या मैक पर भी कर सकते हैं।

चलो, शुरू करते हैं!

डॉक्युअर (Docker) के साथ शुरू करना

डॉक्युअर आपकी प्रणाली में इंस्टाल हो और चल रहा हो।

पर्फ़्लेक्सिका के स्रोत (repository) को क्लोन करें:

git clone https://github.com/ItzCrazyKns/Perplexica.git

क्लोनिंग के बाद, प्रणाली फाइलों (project files) वाले डायरेक्ट्री में जाएँ।

cd Perplexica

सैम्पल कनफिग फाइल sample.config.toml को config.toml नाम से रिनेम (rename) करें। अगर आपका प्रयोजन भविष्य में पर्फ़्लेक्सिका को अद्यतन करने के लिए - git pull करने के लिए - है, तो सिर्फ sample.config.toml फाइल को config.toml में कॉपी करें।

cp sample.config.toml config.toml

कनफिग फाइल (config file) का संपादन करें:

nano config.toml

डॉक्युअर प्रणालियों के लिए, आपको केवल निम्नलिखित क्षेत्रों (fields) में भरना है:

OLLAMA: अपना Ollama API URL।

इसे http://host.docker.internal:PORT_NUMBER के रूप में प्रवेशित करें।

अगर आपने Ollama को 11434 पोर्ट पर इंस्टाल किया है (जो डिफ़ाउल्ट है), तो http://host.docker.internal:11434 इस्तेमाल करें। अन्य पोर्टों के लिए, समानार्थी (anugraha) रूप में समायोजित करें।

पर्फ़्लेक्सिका डायरेक्ट्री में हुए, निर्देश (execute) करें:

docker compose up -d

यह SearxNG और base node docker images पाउंड करेगा (pull), दो Perplexica docker images बुइल्ड करेगा और 3 कंटेनर से शुरू करेगा। कुछ मिनट (minutes) वाइस रखें, प्रणाली सेटअप को पूरा होने के लिए।

आप अपने ब्राउज़र में http://localhost:3000 पर पर्फ़्लेक्सिका (Perplexica) तक पहुंच सकते हैं।

सेटिंग्स (Settings) में जाएँ। आप जानते हैं - डाउनलीft में वह कोर (Cog) आइकन, और अपने Ollama models का चयन करें।

perplexica settings - configuring ollama models

यहाँ आप देख सकते हैं Chat model llama3.1:8b-instruct-q6_K (Llama 3.1 8b with quantization q6_K) को selected किया हुआ है, और Embedding model nomic-embed-text:137m-v1.5-fp16।

आप अन्य में से Light या Dark theme का चयन भी कर सकते हैं, जिसमें आपको अधिक पसंद आएगा।

पर्फ़्लेक्सिका search options (Click on this eye in the box icon), डार्क थीम में: perplexica search options

अन्य Ollama models का इंस्टाल

आपने पहले हिस्से (section) में llama3.1:latest और nomic-embed-text:latest models को इंस्टाल कर चुके हैं।

चात model के लिए आपको केवल एक model चाहिए, लेकिन उपलब्ध (available) models कई हैं। वे थोड़ा-थोड़ा अलग हैं, हमने सर्वाधिक प्रयुक्त (commonly used) ones: Llama3.1, Gemma2, Mistral Nemo या Qwen2 से शुरू करने की अनुशंसा की।

Chat models

आपने इंस्टाल प्रणाली में देखा विस्तृत (full name) chat model - llama3.1:latest है, जो llama3.1:8b-text-q4_0 है। यह 8 billion parameters और quantization 4_0 के साथ है। इसमें तीव्रता (speed) अधिक और relatively smaller size (4.8GB) है, लेकिन अगर आपके GPU में कुछ ज्यादा memory है, तो मुझसे रिकॉमेंड कीजिए llama3.1:8b-instruct-q6_K (6.7GB) - जिसका परीक्षण मैं किया, और इसने अधिक सुविधाजनक (much better) response दिखाया, हालांकि थोड़ा-थोड़ा धीमा (slower) रहा। या llama3.1:8b-instruct-q8_0 (8.5GB) - किसी और में देखने को मिल सकता है।

समग्र (overall) llama3.1:8b ग्रुप के सभी models तीव्रता से चलते हैं।

आप उन्हें परीक्षण करने के लिए जो मैंने रिकॉमेंड किये, उन्हें pull कर सकते हैं:

ollama pull llama3.1:8b-instruct-q6_K
ollama pull llama3.1:8b-instruct-q8_0

Gemma2 में, प्राप्त (produced) response अधिक संक्षिप्त (concise) और कलात्मक (artistic) हैं। उन्हें परीक्षण करने का इरादा हो, तो चेक करें:

# 9.8GB
ollama pull gemma2:9b-instruct-q8_0

# 14GB
ollama pull gemma2:27b-instruct-q3_K_L

Mistral Nemo models, Gemma2 और llama3.1 के बीच किसी न्यूनतम (minimum) से कुछ अधिक प्रदर्शन करते हैं।

# the default one, 7.1GB
ollama pull mistral-nemo:12b-instruct-2407-q4_0

# 10GB
ollama pull mistral-nemo:12b-instruct-2407-q6_K

# 13GB
ollama pull mistral-nemo:12b-instruct-2407-q8_0

आप अन्यान्य के लिए Qwen2 models परीक्षण भी कर सकते हैं।

# the default one, 4.4GB
ollama pull qwen2:7b-instruct-q4_0

# 8.1GB
ollama pull qwen2:7b-instruct-q8_0

मुझे अधिक पसंद आए models हैं: llama3.1:8b-instruct-q6_K and mistral-nemo:12b-instruct-2407-q8_0।

Ollama के local repository में क्या models हैं, उसकी जांच (check) करने के लिए:

ollama list

कोई अविष्कार (unwanted model) हटाने के लिए:

ollama rm qwen2:7b-instruct-q4_0 # for example

Embedding models

आप इन embedding models का इंस्टाल करने से बच सकते हैं, क्योंकि पर्फ़्लेक्सिका में BGE Small, GTE Small और Bert bilingual जैसे 3 embedding models preinstalled हैं। वे समान (not bad) काम करते हैं, लेकिन अगर आपना इन्हें परीक्षण करने को मिठाएँ।

ऊपर Ollama इंस्टाल सेक्शन में, आपने nomic-embed-text:latest embedding model को इंस्टाल किया है, जो एक अच्छा model है। लेकिन मुझने भी रिकॉमेंड किया है:

ollama pull jina/jina-embeddings-v2-base-en:latest
# and 
ollama pull bge-m3:567m-fp16

jina/jina-embeddings-v2-base-en:latest में, जो परिणाम (results) मैंने देखे, वे सबसे अच्छे थे। लेकिन आपको देखना है।

पर्फ़्लेक्सिका का नेटवर्क (Network) से इंस्टाल

अगर आप इसे नेटवर्क सर्वर पर ठहराना चाहते हैं, तो docker compose up -d के बजाय पहले उसका रद्द (down) करें।

अगर आप पहले से पर्फ़्लेक्सिका चला रहे हैं, और images को rebuild करना चाहते हैं, तो docker compose down –rmi all (अगर आपको ज़रूरी नहीं है)।

फिर, अपने perplexica सर्वर का IP address docker-compose.yaml में डालें:

nano docker-compose.yaml

इस प्रकार:

perplexica-frontend:
    build:
      context: .
      dockerfile: app.dockerfile
      args:
      - NEXT_PUBLIC_API_URL=http://127.0.0.1:3001/api   # << here
      - NEXT_PUBLIC_WS_URL=ws://127.0.0.1:3001          # << here
    depends_on:
      - perplexica-backend

अब, पर्फ़्लेक्सिका और SearxNG कंटेनरों (containers) से शुरू करने के लिए:

docker compose up -d

या rebuild और start करने के लिए:

docker compose up -d --build

पर्फ़्लेक्सिका को अद्यतन (Update) करना

डॉक्युअर पर चल रही पर्फ़्लेक्सिका:

# Stop it and remove all the containers (!!! if you need it only)
docker compose down --rmi all

# navigate to the project folder
cd Perplexica

# pull the updates
git pull

# Update and Rebuild Docker Containers:
docker compose up -d --build

डॉक्युअर के बजाय (non-docker) प्रणालियों के लिए, कृपया https://github.com/ItzCrazyKns/Perplexica/blob/master/docs/installation/UPDATING.md पर जाएँ।

सामान्य प्रश्न (FAQ)

  • प्रश्न: क्या है पर्फ़्लेक्सिका?

    • उत्तर: पर्फ़्लेक्सिका एक मुफ्त (free) स्व-आयोजित (self-hosted) AI search engine है, जो perplexity.ai और copilot प्रणालियों के बजाय (alternative to) उपलब्ध है। इसका उपयोग आपकी कम्प्युटर (computer) पर खुद के search engine चलाने के लिए किया जा सकता है।
  • प्रश्न: पर्फ़्लेक्सिका को Ollama के साथ इंस्टाल और सेटअप करने के लिए क्या कदम हैं?

    • उत्तर: कदम शामिल हैं: Ollama को इंस्टाल करें, models pull करें, फिर पर्फ़्लेक्सिका को इंस्टाल करें।
  • प्रश्न: पर्फ़्लेक्सिका में कौन से क自क्षम (customization) options हैं?

    • उत्तර: विभाजन (splitting), अध्ययन (researching), और आवास (hosting) के लिए, आप अलग-अलग models चुन सकते हैं। उदाहरण के लिए: LLama 3.1, Mistral Nemo, Gemma2।
  • प्रश्न: कौन सा Ollama model पर्फ़्लेक्सिका के साथ इस्तेमाल करने के लिए सबसे अच्छा है?

    • उत्तर: हमारे परीक्षणों (tests) में, जब हमने llama3.1:8b-instruct-q6_K और jina/jina-embeddings-v2-base-en:latest का इस्तेमाल किया, तो सबसे अच्छे परिणाम (results) मिले।