Skip to content

Latest commit

 

History

History
274 lines (203 loc) · 10.8 KB

README-Polish.md

File metadata and controls

274 lines (203 loc) · 10.8 KB

Marqo

Marqo

Tensor search for humans.

PyPI - Downloads from pepy

Wyszukiwarka tensorowa typu open source, która bezproblemowo integruje się z Twoimi aplikacjami, witrynami internetowymi i cyklami produkcji.

Chmura Marqo ☁️ jest obecnie w fazie beta. Jeśli jesteś zainteresowany, zgłoś się tutaj: https://q78175g1wwa.typeform.com/to/d0PEuRPC

What is tensor search?

Wyszukiwanie tensorowe polega na przekształcaniu dokumentów, obrazów i innych danych w zbiory wektorów zwane „tensorami”. Reprezentowanie danych jako tensory pozwala nam dopasować zapytania do dokumentów z ludzkim zrozumieniem zapytania i treści dokumentu. Wyszukiwanie tensorowe może wspomagać różne przypadki użycia, takie jak:

  • wyszukiwanie i rekomendacje użytkowników końcowych
  • wyszukiwanie multimodalne (obraz na obraz, tekst na obraz, obraz na tekst)
  • boty czatowe oraz systemy pytań i odpowiedzi
  • klasyfikacja tekstu i obrazu

Pierwsze kroki

  1. Marqo wymaga dokera. Aby zainstalować Docker, przejdź do Docker oficjalna strona.
  2. Użyj dokera, aby uruchomić Marqo (Mac users with M-series chips will need to go here):
docker rm -f marqo;
docker pull marqoai/marqo:latest;
docker run --name marqo -it --privileged -p 8882:8882 --add-host host.docker.internal:host-gateway marqoai/marqo:latest
  1. Zainstaluj klienta Marqo:
pip install marqo
  1. Rozpocznij indeksowanie i wyszukiwanie! Spójrzmy na prosty przykład poniżej:
import marqo

mq = marqo.Client(url='http://localhost:8882')

mq.index("my-first-index").add_documents([
    {
        "Title": "The Travels of Marco Polo",
        "Description": "A 13th-century travelogue describing Polo's travels"
    }, 
    {
        "Title": "Extravehicular Mobility Unit (EMU)",
        "Description": "The EMU is a spacesuit that provides environmental protection, "
                       "mobility, life support, and communications for astronauts",
        "_id": "article_591"
    }]
)

results = mq.index("my-first-index").search(
    q="What is the best outfit to wear on the moon?"
)
  • mq to klient, który otacza API marqo
  • add_documents() pobiera do indeksowania listę dokumentów, reprezentowanych jako dykty Pythona
  • add_documents() tworzy indeks z ustawieniami domyślnymi, jeśli jeszcze nie istnieje
  • Możesz opcjonalnie ustawić identyfikator dokumentu za pomocą specjalnego pola _id. W przeciwnym razie Marqo wygeneruje jeden.
  • Jeśli indeks nie istnieje, Marqo go stworzy. Jeśli istnieje, Marqo doda dokumenty do indeksu.

Przyjrzyjmy się wynikom:

# let's print out the results:
import pprint
pprint.pprint(results)

{
    'hits': [
        {   
            'Title': 'Extravehicular Mobility Unit (EMU)',
            'Description': 'The EMU is a spacesuit that provides environmental protection, mobility, life support, and' 
                           'communications for astronauts',
            '_highlights': {
                'Description': 'The EMU is a spacesuit that provides environmental protection, '
                               'mobility, life support, and communications for astronauts'
            },
            '_id': 'article_591',
            '_score': 0.61938936
        }, 
        {   
            'Title': 'The Travels of Marco Polo',
            'Description': "A 13th-century travelogue describing Polo's travels",
            '_highlights': {'Title': 'The Travels of Marco Polo'},
            '_id': 'e00d1a8d-894c-41a1-8e3b-d8b2a8fce12a',
            '_score': 0.60237324
        }
    ],
    'limit': 10,
    'processingTimeMs': 49,
    'query': 'What is the best outfit to wear on the moon?'
}

– Każde trafienie odpowiada dokumentowi pasującemu do zapytania – Są uporządkowane od najbardziej pasujących do najmniej pasujących – limit to maksymalna liczba trafień do zwrócenia. Można to ustawić jako parametr podczas wyszukiwania – Każde trafienie ma pole _highlights . To była ta część dokumentu, która najlepiej pasowała do zapytania.

Inne podstawowe operacje

Pobierz dokument

Pobierz dokument według ID.

result = mq.index("my-first-index").get_document(document_id="article_591")

Zauważ, że dodanie dokumentu za pomocą add_documents ponownie przy użyciu tego samego _id spowoduje aktualizację dokumentu.

Uzyskaj statystyki indeksu

Uzyskaj informacje o indeksie.

results = mq.index("my-first-index").get_stats()

Wyszukiwanie leksykalne

Przeprowadź wyszukiwanie słów kluczowych.

result =  mq.index("my-first-index").search('marco polo', search_method=marqo.SearchMethods.LEXICAL)

Wyszukaj określone pola

Korzystanie z domyślnej metody wyszukiwania tensorów

result = mq.index("my-first-index").search('adventure', searchable_attributes=['Title'])

Usuń dokumenty

Usuń dokumenty.

results = mq.index("my-first-index").delete_documents(ids=["article_591", "article_602"])

Usuń indeks

Usuń indeks.

results = mq.index("my-first-index").delete()

Wyszukiwanie multimodalne i crossmodalne

Do obsługi wyszukiwania obrazów i tekstu, Marqo umożliwia użytkownikom podłączanie i odtwarzanie modeli CLIP firmy HuggingFace. Pamiętaj, że jeśli nie skonfigurujesz wyszukiwania multimodalnego, adresy URL obrazów będą traktowane jako ciągi. Aby rozpocząć indeksowanie i wyszukiwanie za pomocą obrazów, najpierw utwórz indeks z konfiguracją CLIP, jak poniżej:

settings = {
  "treat_urls_and_pointers_as_images":True,   # allows us to find an image file and index it 
  "model":"ViT-L/14"
}
response = mq.create_index("my-multimodal-index", **settings)

Obrazy można następnie dodawać w dokumentach w następujący sposób. Możesz użyć adresów URL z Internetu (na przykład S3) lub z dysku maszyny:

response = mq.index("my-multimodal-index").add_documents([{
    "My Image": "https://upload.wikimedia.org/wikipedia/commons/thumb/f/f2/Portrait_Hippopotamus_in_the_water.jpg/440px-Portrait_Hippopotamus_in_the_water.jpg",
    "Description": "The hippopotamus, also called the common hippopotamus or river hippopotamus, is a large semiaquatic mammal native to sub-Saharan Africa",
    "_id": "hippo-facts"
}])

Następnie możesz wyszukiwać jak zwykle, używając tekstu. Przeszukiwane będą zarówno pola tekstowe, jak i graficzne:

results = mq.index("my-multimodal-index").search('animal')

Ustawienie parametru searchable_attributes jako pole obrazu ['My Image'] gwarantuje, że w tym indeksie będą przeszukiwane tylko obrazy:

results = mq.index("my-multimodal-index").search('animal',  searchable_attributes=['My Image'])

Wyszukiwanie za pomocą obrazu

Wyszukiwanie za pomocą obrazu można osiągnąć, podając link do obrazu.

results = mq.index("my-multimodal-index").search('https://upload.wikimedia.org/wikipedia/commons/thumb/9/96/Standing_Hippopotamus_MET_DP248993.jpg/440px-Standing_Hippopotamus_MET_DP248993.jpg')

Dokumentacja

Pełna dokumentacja Marqo znajduje się tutaj: https://marqo.pages.dev/.

Ostrzeżenie

Pamiętaj, że nie powinieneś uruchamiać innych aplikacji w klastrze Opensearch Marqo, ponieważ Marqo automatycznie zmienia i dostosowuje ustawienia w klastrze.

M series Mac użytkownicy

Marqo nie obsługuje jeszcze konfiguracji zaplecza docker-in-docker dla architektury arm64. Oznacza to, że jeśli masz komputer Mac z serii M, będziesz musiał również uruchomić lokalnie backend marqo, marqo-os.

Aby uruchomić Marqo na komputerze Mac z serii M, wykonaj następujące kroki.

  1. W jednym terminalu uruchom następujące polecenie, aby rozpocząć opensearch:
docker rm -f marqo-os; docker run -p 9200:9200 -p 9600:9600 -e "discovery.type=single-node" marqoai/marqo-os:0.0.3-arm
  1. W innym terminalu uruchom następujące polecenie, aby uruchomić Marqo:
docker rm -f marqo; docker run --name marqo --privileged \
    -p 8882:8882 --add-host host.docker.internal:host-gateway \
    -e "OPENSEARCH_URL=https://localhost:9200" \
    marqoai/marqo:latest

Kontrybutorzy

Marqo to projekt społecznościowy, którego celem jest udostępnienie wyszukiwania tensorowego szerszej społeczności programistów. Cieszymy się, że jesteś zainteresowany pomocą! Aby rozpocząć, przeczytaj to

Dev set up

  1. Utwórz wirtualne środowisko python -m venv ./venv
  2. Aktywuj środowisko wirtualne source ./venv/bin/activate
  3. Zainstaluj wymagania z pliku wymagań: pip install -r requirements.txt
  4. Uruchom testy, uruchamiając plik tox. CD do tego dir, a następnie uruchom "tox"
  5. Jeśli aktualizujesz zależności, Upewnij się, że usunięto dir .tox i uruchom ponownie

Merge instrukcje:

  1. Uruchom pełny zestaw testowy (za pomocą komendy tox w tym dir).
  2. Utwórz pull request z dołączonym rozwiązaniem.

Support

  • Dołączć do naszego Slack community i rozmawiaj z innymi członkami społeczności o pomysłach.
  • Spotkania społeczności Marqo (już wkrótce!)

Stargazers

Stargazers repo roster for @marqo-ai/marqo

Forkers

Forkers repo roster for @marqo-ai/marqo

Tłumaczenia

Ten plik readme jest dostępny w następujących tłumaczeniach: