<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <id>https://weaviate.io/apple-and-weaviate</id>
    <title>Weaviate Blog</title>
    <updated>2024-07-02T00:00:00.000Z</updated>
    <generator>https://github.com/jpmonette/feed</generator>
    <link rel="alternate" href="https://weaviate.io/apple-and-weaviate"/>
    <subtitle>Weaviate Blog</subtitle>
    <icon>https://weaviate.io/img/favicon.ico</icon>
    <entry>
        <title type="html"><![CDATA[Create and Load a Weaviate Cluster]]></title>
        <id>https://weaviate.io/apple-and-weaviate/apple-apps-part-5</id>
        <link href="https://weaviate.io/apple-and-weaviate/apple-apps-part-5"/>
        <updated>2024-07-02T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Set up a Weaviate Cluster on WCD and load in book data using a python data pipeline that can be searched through your iOS and other Apple Ecosystem Applications.]]></summary>
        <content type="html"><![CDATA[<p><img decoding="async" loading="lazy" alt="Set up a Weaviate Cluster on WCD and load in book data using a python data pipeline that can be searched through your iOS and other Apple Ecosystem Applications." src="https://weaviate.io/assets/images/hero-7992ecb4f1fac8cd1a421d4986341437.png" width="1200" height="630" class="img_ev3q"></p>
<p>In this article we will setup a Weaviate Cluster and load the same books data used in the article <a class="" href="https://weaviate.io/apple-and-weaviate/apple-apps-part-1">IOS Intro - Search with Benefits</a>.</p>
<p>You can download the resources used in this blog <a href="https://github.com/weaviate/BookRecs/blob/main/blog-resources/article05.zip" target="_blank" rel="noopener noreferrer" class="">here</a>.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="quckstart">Quckstart<a href="https://weaviate.io/apple-and-weaviate/apple-apps-part-5#quckstart" class="hash-link" aria-label="Direct link to Quckstart" title="Direct link to Quckstart" translate="no">​</a></h3>
<p>How to <a href="https://docs.weaviate.io/wcs/quickstart" target="_blank" rel="noopener noreferrer" class="">create a Weaviate account and cluster</a></p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="running-python-on-your-mac">Running Python on your Mac<a href="https://weaviate.io/apple-and-weaviate/apple-apps-part-5#running-python-on-your-mac" class="hash-link" aria-label="Direct link to Running Python on your Mac" title="Direct link to Running Python on your Mac" translate="no">​</a></h3>
<p>How to run <a class="" href="https://weaviate.io/apple-and-weaviate/apple-apps-part-3">Python applications on a Mac</a>.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="external-builder-xcode-for-python">External Builder (Xcode) for Python<a href="https://weaviate.io/apple-and-weaviate/apple-apps-part-5#external-builder-xcode-for-python" class="hash-link" aria-label="Direct link to External Builder (Xcode) for Python" title="Direct link to External Builder (Xcode) for Python" translate="no">​</a></h3>
<p>Using <a class="" href="https://weaviate.io/apple-and-weaviate/apple-apps-part-4">Xcode to run Python</a> applications</p>
<p><img decoding="async" loading="lazy" alt="external-builder-image" src="https://weaviate.io/assets/images/external-builder-image-c648277bf2c46b2c177768cdd8539c89.png" width="1701" height="735" class="img_ev3q"></p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="create-a-cluster">Create a Cluster<a href="https://weaviate.io/apple-and-weaviate/apple-apps-part-5#create-a-cluster" class="hash-link" aria-label="Direct link to Create a Cluster" title="Direct link to Create a Cluster" translate="no">​</a></h2>
<p>Follow account setup and cluster creation as explained in the <strong>Quickstart Tutorial</strong> and take note of the following.</p>
<ol>
<li class="">REST Endpoint URL</li>
</ol>
<p><img decoding="async" loading="lazy" alt="create-a-cluster-1" src="https://weaviate.io/assets/images/create-a-cluster-1-75768559a381f03288baee3d7158a0a9.png" width="1313" height="285" class="img_ev3q"></p>
<ol start="2">
<li class="">Weaviate API Key
<img decoding="async" loading="lazy" alt="create-a-cluster-2" src="https://weaviate.io/assets/images/create-a-cluster-2-1cfc386dc37e9a51dddb3d4ad05f0c5d.png" width="1313" height="1280" class="img_ev3q"></li>
</ol>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="create-xcode-project">Create XCode Project<a href="https://weaviate.io/apple-and-weaviate/apple-apps-part-5#create-xcode-project" class="hash-link" aria-label="Direct link to Create XCode Project" title="Direct link to Create XCode Project" translate="no">​</a></h2>
<p>Create an Xcode Project using External Builder as described in <strong>External Builder (Xcode) for Python</strong>.</p>
<p><img decoding="async" loading="lazy" alt="create-xcode-project" src="https://weaviate.io/assets/images/create-xcode-project-d4810c28e377c2261fcad6c9d0a5b872.png" width="826" height="619" class="img_ev3q"></p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="install-weaviate-client">Install Weaviate Client<a href="https://weaviate.io/apple-and-weaviate/apple-apps-part-5#install-weaviate-client" class="hash-link" aria-label="Direct link to Install Weaviate Client" title="Direct link to Install Weaviate Client" translate="no">​</a></h2>
<p>From the root directory of your Xcode Project, install the Weaviate Client.</p>
<p>pip install -U weaviate-client</p>
<p>Refer to the section <strong>Install Python Packages and Setup a Virtual Environment</strong> in the article <strong>External Builder (Xcode) for Python</strong> for guidance</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="openai-embeddings-access">OpenAI Embeddings Access<a href="https://weaviate.io/apple-and-weaviate/apple-apps-part-5#openai-embeddings-access" class="hash-link" aria-label="Direct link to OpenAI Embeddings Access" title="Direct link to OpenAI Embeddings Access" translate="no">​</a></h2>
<p>Create an OpenAI API Key and note the number created.</p>
<p><a href="https://www.howtogeek.com/885918/how-to-get-an-openai-api-key/" target="_blank" rel="noopener noreferrer" class="">https://www.howtogeek.com/885918/how-to-get-an-openai-api-key/</a></p>
<p>OpenAI is needed to translate text to vector embeddings for book data.</p>
<p>As of this article, it will cost less than 10 cents to use this one-time (create vector input to be loaded into the cluster) OpenAI feature.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="enter-run-arguments">Enter Run Arguments<a href="https://weaviate.io/apple-and-weaviate/apple-apps-part-5#enter-run-arguments" class="hash-link" aria-label="Direct link to Enter Run Arguments" title="Direct link to Enter Run Arguments" translate="no">​</a></h2>
<p>As described in the article External Builder (Xcode) for Python enter the Run Arguments.</p>
<p>The Cohere key can remain blank.</p>
<p><img decoding="async" loading="lazy" alt="enter-run-arguments" src="https://weaviate.io/assets/images/enter-run-arguments-1c2b1ecb4c2b0efe19164174c36bd7ad.png" width="1721" height="965" class="img_ev3q"></p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="support-files">Support Files<a href="https://weaviate.io/apple-and-weaviate/apple-apps-part-5#support-files" class="hash-link" aria-label="Direct link to Support Files" title="Direct link to Support Files" translate="no">​</a></h2>
<p>What is included: A  python script <strong>main.py</strong> to define the cluster and load book data, and book data <strong>7k-books-kaggle.csv</strong>.</p>
<p>These files were copied from Adam’s (of Weaviate) GitHub project</p>
<p>The python script was modified slightly for clarity.</p>
<p><a href="https://github.com/weaviate/BookRecs" target="_blank" rel="noopener noreferrer" class="">https://github.com/weaviate/BookRecs</a></p>
<p>Copy these files to your Xcode project.</p>
<p><img decoding="async" loading="lazy" alt="support-files" src="https://weaviate.io/assets/images/support-files-eb14b5c1bdc8082e8476d582bb27db4f.png" width="981" height="539" class="img_ev3q"></p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="book-data">Book Data<a href="https://weaviate.io/apple-and-weaviate/apple-apps-part-5#book-data" class="hash-link" aria-label="Direct link to Book Data" title="Direct link to Book Data" translate="no">​</a></h3>
<p>A CSV of approximately 7,000 books.</p>
<p><img decoding="async" loading="lazy" alt="book-data" src="https://weaviate.io/assets/images/book-data-9cad50fabbd319147d3830e4198ce846.png" width="1692" height="319" class="img_ev3q"></p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="python-script-to-create-and-load-cluster">Python Script to Create and Load Cluster<a href="https://weaviate.io/apple-and-weaviate/apple-apps-part-5#python-script-to-create-and-load-cluster" class="hash-link" aria-label="Direct link to Python Script to Create and Load Cluster" title="Direct link to Python Script to Create and Load Cluster" translate="no">​</a></h3>
<p>The <strong>main.py</strong> python script will do the following</p>
<p>Define the schema of a Books Custer
Create vector embeddings of Book Data
Load embeddings into the Books Cluster</p>
<p>Each step is logged in the console.</p>
<p>The longest step to run is the “Load Data” step which may take a couple of minutes.</p>
<p>Don’t forget to make sure that the virtual environment is activated before running.</p>
<p>source venv/bin/activate</p>
<p><img decoding="async" loading="lazy" alt="python-execution-logs" src="https://weaviate.io/assets/images/python-execution-logs-3d4113b4eabe551f10ff28a8db17a1da.png" width="1066" height="564" class="img_ev3q"></p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="mainpy-startup">main.py: Startup<a href="https://weaviate.io/apple-and-weaviate/apple-apps-part-5#mainpy-startup" class="hash-link" aria-label="Direct link to main.py: Startup" title="Direct link to main.py: Startup" translate="no">​</a></h3>
<p>API Keys are specified.</p>
<p><img decoding="async" loading="lazy" alt="main-py-image-startup" src="https://weaviate.io/assets/images/main-py-image-startup-df9e5853e0ad8bb0e080a60cd559dba6.png" width="1433" height="832" class="img_ev3q"></p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="mainpy-cluster-defined">main.py: Cluster Defined<a href="https://weaviate.io/apple-and-weaviate/apple-apps-part-5#mainpy-cluster-defined" class="hash-link" aria-label="Direct link to main.py: Cluster Defined" title="Direct link to main.py: Cluster Defined" translate="no">​</a></h3>
<p>Defines the Weaviate Books cluster.</p>
<p>The <strong>text2vec-openai</strong> parameter defines a vectorizer to convert text into numerical vectors.</p>
<p>The specific OpenAI model used for embedding is <strong>ADA Version 2</strong>.</p>
<p><a href="https://openai.com/index/new-and-improved-embedding-model" target="_blank" rel="noopener noreferrer" class="">https://openai.com/index/new-and-improved-embedding-model</a></p>
<p><img decoding="async" loading="lazy" alt="main-py-image-collection" src="https://weaviate.io/assets/images/main-py-image-collection-0a899210c4bd1978ba37b4f20f6232b8.png" width="1599" height="1328" class="img_ev3q"></p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="mainpy-read-book-data">main.py: Read Book Data<a href="https://weaviate.io/apple-and-weaviate/apple-apps-part-5#mainpy-read-book-data" class="hash-link" aria-label="Direct link to main.py: Read Book Data" title="Direct link to main.py: Read Book Data" translate="no">​</a></h3>
<p>Read the file of Book Data.</p>
<p>Make sure to define your directory path.</p>
<p><img decoding="async" loading="lazy" alt="main-py-image-read-books" src="https://weaviate.io/assets/images/main-py-image-read-books-5e51d2ad369760921cd501c3305edea1.png" width="1412" height="498" class="img_ev3q"></p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="mainpy-load-data">main.py: Load Data<a href="https://weaviate.io/apple-and-weaviate/apple-apps-part-5#mainpy-load-data" class="hash-link" aria-label="Direct link to main.py: Load Data" title="Direct link to main.py: Load Data" translate="no">​</a></h3>
<p>Properties are mapped from the data file to the Weaviate cluster.</p>
<p>For each book record, text is converted to a vector and loaded into the Weaviate cluster.</p>
<p><img decoding="async" loading="lazy" alt="main-py-image-load-data" src="https://weaviate.io/assets/images/main-py-image-load-data-f8ff647d0bd6c9fe6df20d6ab249d144.png" width="1395" height="1675" class="img_ev3q"></p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="mainpy-clean-up">main.py: Clean-up<a href="https://weaviate.io/apple-and-weaviate/apple-apps-part-5#mainpy-clean-up" class="hash-link" aria-label="Direct link to main.py: Clean-up" title="Direct link to main.py: Clean-up" translate="no">​</a></h3>
<p>Close the book data file and end the script.</p>
<p><img decoding="async" loading="lazy" alt="main-py-image-close" src="https://weaviate.io/assets/images/main-py-image-close-c8980d76202ffc1fdaab5d0ee42c5f09.png" width="691" height="303" class="img_ev3q"></p>
<!-- -->
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="stay-connected">Stay connected<a href="https://weaviate.io/apple-and-weaviate/apple-apps-part-5#stay-connected" class="hash-link" aria-label="Direct link to Stay connected" title="Direct link to Stay connected" translate="no">​</a></h2>
<p>Thank you so much for reading! If you would like to talk to us more about this topic, please connect with us:</p>
<ul>
<li class=""><a href="https://forum.weaviate.io/" target="_blank" rel="noopener noreferrer" class="">Community forum</a></li>
<li class=""><a href="https://github.com/weaviate/weaviate" target="_blank" rel="noopener noreferrer" class="">GitHub</a> Don’t forget to give us a ⭐️!</li>
<li class=""><a href="https://twitter.com/weaviate_io" target="_blank" rel="noopener noreferrer" class="">X (Twitter)</a></li>
<li class=""><a href="https://www.linkedin.com/company/weaviate-io" target="_blank" rel="noopener noreferrer" class="">LinkedIn</a></li>
</ul>
<!-- -->
]]></content>
        <author>
            <name>Randy Fong</name>
            <uri>https://www.linkedin.com/in/randy-fong-1530545/</uri>
        </author>
        <author>
            <name>Adam Chan</name>
            <uri>https://www.linkedin.com/in/itsajchan/</uri>
        </author>
        <category label="iOS" term="iOS"/>
        <category label="mobile app development" term="mobile app development"/>
        <category label="vector databases" term="vector databases"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Search with Benefits]]></title>
        <id>https://weaviate.io/apple-and-weaviate/apple-apps-part-1</id>
        <link href="https://weaviate.io/apple-and-weaviate/apple-apps-part-1"/>
        <updated>2024-07-02T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Upgrade your app's search function and get a hands on intro to vector databases using the Weaviate Platform]]></summary>
        <content type="html"><![CDATA[<p><img decoding="async" loading="lazy" alt="Upgrade your app&amp;#39;s search function and get a hands on intro to vector databases using the Weaviate Platform" src="https://weaviate.io/assets/images/search-with-benefits-hero-b497c6e88d0b86c96ca6c5a2cb2dca93.png" width="1200" height="630" class="img_ev3q"></p>
<p>Convert your structured data to a Weaviate Vector Database and unlock powerful search features. A vector DB understands the meaning behind your data, enabling you to find similar items and make connections you might have missed with traditional searches.</p>
<p>In this article we will talk about some of these important features.</p>
<ul>
<li class="">This article includes a ready-to-use Swift app and all the code. Download it from the Git repo <a href="https://github.com/weaviate/BookRecs/tree/main/blog-resources/Search-With-Benefits.swiftpm" target="_blank" rel="noopener noreferrer" class="">here</a>.</li>
<li class="">You can run the code in a Swift Playground, which is an interactive learning environment for Swift.</li>
<li class="">By running the code in the Playground, you can experiment with Swift and try out different ideas.</li>
</ul>
<h1>What you need</h1>
<ol>
<li class="">
<p>OpenAI API Key</p>
<ul>
<li class=""><a href="https://www.howtogeek.com/885918/how-to-get-an-openai-api-key/" target="_blank" rel="noopener noreferrer" class="">https://www.howtogeek.com/885918/how-to-get-an-openai-api-key/</a></li>
</ul>
</li>
<li class="">
<p>Apple’s Playgrounds App</p>
<ul>
<li class=""><a href="https://www.apple.com/sg/swift/playgrounds/" target="_blank" rel="noopener noreferrer" class="">https://www.apple.com/sg/swift/playgrounds/</a></li>
</ul>
</li>
<li class="">
<p>Either a Mac or iPad to run the Playgrounds App</p>
</li>
</ol>
<p>Everything else is already included such as the “Search with Benefits” app, Swift Code and a Weaviate Vector Database of Books.</p>
<h1>Search with Benefits</h1>
<p>Searching structured data is limited to the exact <strong>matching of keywords</strong> to values within a schema. To access a set of records a language such as SQL needs to be coded by a developer. Each search requires unique code for each type of query.</p>
<p>With Weaviate only one statement is needed.</p>
<p>Vector search is done by <strong>inferring the meaning</strong> of what you are trying to find and <strong>reasoning what scenarios are similar</strong>.</p>
<p>Let’s compare <strong>Structured Search</strong> and <strong>Vector Search</strong> in more detail.</p>
<h1>Structured Search</h1>
<p>Using a conventional search on structured data you are limited to schema and logic constraints.</p>
<p>Exact matches on structured data is required.</p>
<p>In addition, for each type of search a developer needs to provide SQL code to account for each and every scenario.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="examples">Examples<a href="https://weaviate.io/apple-and-weaviate/apple-apps-part-1#examples" class="hash-link" aria-label="Direct link to Examples" title="Direct link to Examples" translate="no">​</a></h2>
<ol>
<li class="">
<p>Find all books by a specific author:</p>
<p><code>author = "J.R.R. Tolkien"</code></p>
</li>
<li class="">
<p>Find books with a title containing a keyword:</p>
<p><code>title LIKE "%Pride and Prejudice%"</code></p>
</li>
<li class="">
<p>Find books with descriptions mentioning a specific topic:</p>
<p><code>description LIKE "%artificial intelligence%"</code></p>
</li>
<li class="">
<p>Find books with titles starting with a specific letter:</p>
<p><code>title LIKE "A%"</code></p>
</li>
<li class="">
<p>Find books with a specific number of words in the title:</p>
<p><code>LENGTH(title) = 3</code></p>
</li>
<li class="">
<p>Find all books by an author and sort by title alphabetically:</p>
<p><code>author = "Agatha Christie" ORDER BY title ASC</code></p>
</li>
<li class="">
<p>Find books with descriptions longer than a specific word count:</p>
<p><code>LENGTH(description) &gt; 500</code></p>
</li>
<li class="">
<p>Find books with a title or description containing a specific phrase:</p>
<p><code>(title LIKE "%Lord of the Rings%" OR description LIKE "%Lord of the Rings%")</code></p>
</li>
<li class="">
<p>Find all books except those by a specific author:</p>
<p><code>author != "Stephen King"</code></p>
</li>
<li class="">
<p>Find books that haven't been assigned a description yet:</p>
<p><code>description IS NULL</code></p>
</li>
<li class="">
<p>Find books with titles shorter than 10 characters:</p>
<p><code>LENGTH(title) &lt; 10</code></p>
</li>
<li class="">
<p>Find all books with a specific ID:</p>
<p><code>ID = 123</code></p>
</li>
<li class="">
<p>Find a random sample of 10 books:</p>
<p><code>RANDOM() LIMIT 10</code></p>
</li>
<li class="">
<p>Find all books with descriptions containing at least two keywords (combine with OR):</p>
<p><code>description LIKE "%machine learning%" OR description LIKE "%data science%"</code></p>
</li>
<li class="">
<p>Find all books with descriptions containing keywords but exclude books by  author:</p>
<p><code>(description LIKE "%machine learning%" OR description LIKE "%data science%") AND      author != "Ian Goodfellow"</code></p>
</li>
</ol>
<h1>Vector Search</h1>
<p>With Vector Search you state your meaning in a prompt. Using one reusable statement  (varying only by the prompt entered)  a search will explore a Vector Database and return a set of results.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="examples-1">Examples<a href="https://weaviate.io/apple-and-weaviate/apple-apps-part-1#examples-1" class="hash-link" aria-label="Direct link to Examples" title="Direct link to Examples" translate="no">​</a></h2>
<ol>
<li class="">Find similar books to Pride and Prejudice by Jane Austen.</li>
<li class="">Find science fiction books similar to Dune by Frank Herbert.</li>
<li class="">Find fantasy novels with a coming-of-age theme.</li>
<li class="">Recommend dramas similar to Wizard of Oz.</li>
<li class="">Search for mysteries set in Western Europe.</li>
<li class="">Discover historical books similar to The Audacity of Hope: Thoughts on Reclaiming the   American Dream.</li>
<li class="">Personalize search results based on a college aged woman from Boston majoring in fine arts who enjoys vacations in France.</li>
<li class="">Find books with a similar writing style to a JR Tolkien.</li>
<li class="">Search for light-hearted comedies similar to a Tom Hanks movie like Forrest Gump.</li>
<li class="">Recommend books with a similar emotional impact to Danielle Steel's The Butler.</li>
<li class="">Assist book clubs by finding thematically linked books to The Anxious Generation: How the Great Rewiring of Childhood Is Causing an Epidemic of Mental Illness.</li>
<li class="">Personalize children's book recommendations based on a kindergarten reading level.</li>
</ol>
<h1>Running Search with Benefits App</h1>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="open-app">Open App<a href="https://weaviate.io/apple-and-weaviate/apple-apps-part-1#open-app" class="hash-link" aria-label="Direct link to Open App" title="Direct link to Open App" translate="no">​</a></h3>
<p>Download the app and open it in Swift Playgrounds.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="enter-openai-api-key">Enter OpenAI API Key<a href="https://weaviate.io/apple-and-weaviate/apple-apps-part-1#enter-openai-api-key" class="hash-link" aria-label="Direct link to Enter OpenAI API Key" title="Direct link to Enter OpenAI API Key" translate="no">​</a></h3>
<p>Open the <code>SearchWithBenefitsViewModel</code> swift file and enter your key.</p>
<p><img decoding="async" loading="lazy" alt="insert-openai-api-key-image" src="https://weaviate.io/assets/images/openai-key-in-SearchWithBenefitsViewModel-59076296ab229985cea7d59787b8bc1e.png" width="1086" height="388" class="img_ev3q"></p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="run-the-app">Run the App<a href="https://weaviate.io/apple-and-weaviate/apple-apps-part-1#run-the-app" class="hash-link" aria-label="Direct link to Run the App" title="Direct link to Run the App" translate="no">​</a></h3>
<p>Open the <strong>ContentView</strong> swift file and navigate towards the bottom where there are some suggested prompts.</p>
<p>Copy one of the prompts onto the search field of the app.</p>
<p>Click on the magnifying glass icon to perform a search. Or, enter any search prompt you can think of!</p>
<p>Or, before doing the above - run the app by clicking on this button below:</p>
<p><img decoding="async" loading="lazy" alt="run-the-app-image" src="https://weaviate.io/assets/images/run-the-app-ef49ad354e831c9869ea96032ad7c270.png" width="1148" height="658" class="img_ev3q"></p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="about-the-code">About the Code<a href="https://weaviate.io/apple-and-weaviate/apple-apps-part-1#about-the-code" class="hash-link" aria-label="Direct link to About the Code" title="Direct link to About the Code" translate="no">​</a></h2>
<p>Weaviate related code can be found in the <code>SearchWithBenefitsViewModel</code> swift file.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="weaviate-api-connection">Weaviate API Connection<a href="https://weaviate.io/apple-and-weaviate/apple-apps-part-1#weaviate-api-connection" class="hash-link" aria-label="Direct link to Weaviate API Connection" title="Direct link to Weaviate API Connection" translate="no">​</a></h3>
<p><strong>urlString</strong></p>
<p>The web address (endpoint) used to connect to the Weaviate API.</p>
<p><strong>weaviateApiKey</strong></p>
<p>Special code (token) that grants you access.</p>
<p><img decoding="async" loading="lazy" alt="Weaviate-readonly-credentials" src="https://weaviate.io/assets/images/weaviate-bookrecs-readcredentials-6633d41fdc568b8f696a8ae7aeadcac8.png" width="1133" height="259" class="img_ev3q"></p>
<p>For this demonstration, the Weaviate DB was already set up for you.</p>
<p>Leave the predefined values as they are.</p>
<p>We'll cover how to set up your own vector database in detail in future articles.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="weaviate-query">Weaviate Query<a href="https://weaviate.io/apple-and-weaviate/apple-apps-part-1#weaviate-query" class="hash-link" aria-label="Direct link to Weaviate Query" title="Direct link to Weaviate Query" translate="no">​</a></h2>
<p>Search Query Example:</p>
<p><strong>Input</strong></p>
<p>"Search for mysteries set in Western Europe”</p>
<p><strong>Output</strong></p>
<p>This query retrieves information about up to 10 mystery novels set in Western Europe. It returns both the title and a brief description of each book.</p>
<p><img decoding="async" loading="lazy" alt="weaviate-graphql-query" src="https://weaviate.io/assets/images/weaviate-graphql-query-c1aea093716b6c3b292f44cdf9cb3c45.png" width="1029" height="413" class="img_ev3q"></p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="using-postman">Using Postman<a href="https://weaviate.io/apple-and-weaviate/apple-apps-part-1#using-postman" class="hash-link" aria-label="Direct link to Using Postman" title="Direct link to Using Postman" translate="no">​</a></h2>
<p><img decoding="async" loading="lazy" alt="weaviate-postman-query" src="https://weaviate.io/assets/images/postman-query-22b10b893db6bb85bc8c258a3d9a645a.png" width="1416" height="530" class="img_ev3q">
<img decoding="async" loading="lazy" alt="weaviate-postman-query-body" src="https://weaviate.io/assets/images/postman-query-body-db063bebc30dc0ef0fce444ae476927c.png" width="1416" height="397" class="img_ev3q">
<img decoding="async" loading="lazy" alt="weaviate-postman-query-output" src="https://weaviate.io/assets/images/postman-query-output-b1358bd52661deb86dfb9b8cbbb79282.png" width="1356" height="744" class="img_ev3q"></p>
<!-- -->
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="stay-connected">Stay connected<a href="https://weaviate.io/apple-and-weaviate/apple-apps-part-1#stay-connected" class="hash-link" aria-label="Direct link to Stay connected" title="Direct link to Stay connected" translate="no">​</a></h2>
<p>Thank you so much for reading! If you would like to talk to us more about this topic, please connect with us:</p>
<ul>
<li class=""><a href="https://forum.weaviate.io/" target="_blank" rel="noopener noreferrer" class="">Community forum</a></li>
<li class=""><a href="https://github.com/weaviate/weaviate" target="_blank" rel="noopener noreferrer" class="">GitHub</a> Don’t forget to give us a ⭐️!</li>
<li class=""><a href="https://twitter.com/weaviate_io" target="_blank" rel="noopener noreferrer" class="">X (Twitter)</a></li>
<li class=""><a href="https://www.linkedin.com/company/weaviate-io" target="_blank" rel="noopener noreferrer" class="">LinkedIn</a></li>
</ul>
<!-- -->
]]></content>
        <author>
            <name>Randy Fong</name>
            <uri>https://www.linkedin.com/in/randy-fong-1530545/</uri>
        </author>
        <author>
            <name>Adam Chan</name>
            <uri>https://www.linkedin.com/in/itsajchan/</uri>
        </author>
        <category label="iOS" term="iOS"/>
        <category label="Apple" term="Apple"/>
        <category label="mobile app development" term="mobile app development"/>
        <category label="search" term="search"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[External Builder (Xcode) for Python]]></title>
        <id>https://weaviate.io/apple-and-weaviate/apple-apps-part-4</id>
        <link href="https://weaviate.io/apple-and-weaviate/apple-apps-part-4"/>
        <updated>2024-07-02T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Use Xcode to run your Python datapipelines. This article explains how you can set up external builders to integrate Python into your Xcode workflows.]]></summary>
        <content type="html"><![CDATA[<p><img decoding="async" loading="lazy" alt="Use Xcode to run your Python datapipelines. This article explains how you can set up external builders to integrate Python into your Xcode workflows." src="https://weaviate.io/assets/images/external-builder-hero-75325fda413864c18efa71e2acf673a4.png" width="1200" height="630" class="img_ev3q"></p>
<p>Xcode itself isn't built for directly developing and building Python projects. However, you can leverage external builders to integrate Python development into your Xcode workflow.</p>
<p>Using Xcode to run python scripts is an alternative to using a native to python playground like Jupyter while allowing you to use a development tool you are familiar with.</p>
<p>Set up requires using Xcode and the terminal command line.</p>
<p><img decoding="async" loading="lazy" alt="overview-image" src="https://weaviate.io/assets/images/overview-image-65cbccf8d9d422151ff5b544227ba5e2.png" width="1430" height="1128" class="img_ev3q"></p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="external-builder">External Builder<a href="https://weaviate.io/apple-and-weaviate/apple-apps-part-4#external-builder" class="hash-link" aria-label="Direct link to External Builder" title="Direct link to External Builder" translate="no">​</a></h2>
<p>The External Builder is created in Xcode by selecting File&gt;New&gt;Project followed by selecting the External Build System icon in the Other tab.</p>
<p><img decoding="async" loading="lazy" alt="extern-builder-image" src="https://weaviate.io/assets/images/external-builder-5d6cda58c0a1d8842a265064bc898549.png" width="1243" height="895" class="img_ev3q"></p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="define-build-tool-path">Define Build Tool Path<a href="https://weaviate.io/apple-and-weaviate/apple-apps-part-4#define-build-tool-path" class="hash-link" aria-label="Direct link to Define Build Tool Path" title="Direct link to Define Build Tool Path" translate="no">​</a></h2>
<p>The Build Tool parameter defines a path to the python build executable.</p>
<p>Enter a path.</p>
<p>The build executable is a Python interpreter that runs scripts and imports modules (pre-written Python code) from various libraries.</p>
<p>The path to the build executable can be found by entering which python on the terminal command line while in your project directory</p>
<p>This path points to an alias .</p>
<p>/opt/anaconda3/bin/python</p>
<p>The alias points to an executable file.</p>
<p>/opt/anaconda3/bin/python3.11</p>
<p>Refer to the article <a class="" href="https://weaviate.io/apple-and-weaviate/apple-apps-part-3">Running Python on your Mac</a>, for more details, if this sounds confusing.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="install-python-packages-and-setup-a-virtual-environment">Install Python Packages and Setup a Virtual Environment<a href="https://weaviate.io/apple-and-weaviate/apple-apps-part-4#install-python-packages-and-setup-a-virtual-environment" class="hash-link" aria-label="Direct link to Install Python Packages and Setup a Virtual Environment" title="Direct link to Install Python Packages and Setup a Virtual Environment" translate="no">​</a></h2>
<p>See the article <a class="" href="https://weaviate.io/apple-and-weaviate/apple-apps-part-3">Running Python on your Mac</a> for instructions.</p>
<p>Install Python packages into a <code>venv</code> directory within your project to create a virtual environment.</p>
<p>In this example <strong>numpy</strong> and <strong>pandas</strong> are the external packages have been loaded.</p>
<p>Remember: <strong>If you close your terminal window</strong>, you'll need to <strong>reactivate the virtual environment</strong> using the <code>source venv/bin/activate</code> command before working on your project again.</p>
<p><img decoding="async" loading="lazy" alt="define-build-tool-path-image-1" src="https://weaviate.io/assets/images/define-build-tool-path-image-3-6b7f5033f8d926f902cf4925be020be9.png" width="673" height="882" class="img_ev3q"></p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="edit-scheme">Edit Scheme<a href="https://weaviate.io/apple-and-weaviate/apple-apps-part-4#edit-scheme" class="hash-link" aria-label="Direct link to Edit Scheme" title="Direct link to Edit Scheme" translate="no">​</a></h2>
<p>Define a Run Script and Executable in your scheme.</p>
<p><img decoding="async" loading="lazy" alt="edit-scheme-image1" src="https://weaviate.io/assets/images/edit-scheme-image1-6cbc949feaf1476ca1e90c50b847a364.png" width="1210" height="633" class="img_ev3q"></p>
<p>After completing all of the steps that follow, the scheme will look something like this.</p>
<p><img decoding="async" loading="lazy" alt="edit-scheme-image2" src="https://weaviate.io/assets/images/edit-scheme-image2-003ce28cf9ae1c362e26de0deaff616e.png" width="1484" height="722" class="img_ev3q"></p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="run-script-pre-action">Run Script (Pre-action)<a href="https://weaviate.io/apple-and-weaviate/apple-apps-part-4#run-script-pre-action" class="hash-link" aria-label="Direct link to Run Script (Pre-action)" title="Direct link to Run Script (Pre-action)" translate="no">​</a></h3>
<p>Enter a run script to give your project <strong>access to the python packages</strong> implemented in the virtual environment.</p>
<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">source ~/.bash_profile</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">workon venv</span><br></span></code></pre></div></div>
<p>The script is modified through the scheme <code>Run &gt; Pre-actions</code>.</p>
<p><img decoding="async" loading="lazy" alt="edit-scheme-image3" src="https://weaviate.io/assets/images/edit-scheme-image3-4d7d77b9548f6506c18aee67d9a58778.png" width="1423" height="1176" class="img_ev3q"></p>
<p><strong>Executable (Run Info)</strong></p>
<p>Enter the path to the executable used to run python scripts.</p>
<p>Have the path you already defined for the build tool handy.</p>
<p>In this example it was: <code>/opt/anaconda3/bin/python3.11</code>.</p>
<p>The executable parameter is modified through the scheme <code>Run &gt; Run</code>.</p>
<ol>
<li class="">Click on Executable list that is currently set to <code>None</code>.</li>
</ol>
<p><img decoding="async" loading="lazy" alt="executable-run-1" src="https://weaviate.io/assets/images/executable-run-1-5c92959d6f33bba01f48a9f14acca150.png" width="1928" height="642" class="img_ev3q"></p>
<ol start="2">
<li class="">Select the Other option.</li>
</ol>
<p><img decoding="async" loading="lazy" alt="executable-run-2" src="https://weaviate.io/assets/images/executable-run-2-5afd5fc743f2eea7c4e8ef2f986e62cd.png" width="1914" height="403" class="img_ev3q"></p>
<ol start="3">
<li class=""><strong>Ignore</strong> the <code>Choose the executable to launch</code> directory presented.</li>
</ol>
<p><img decoding="async" loading="lazy" alt="executable-run-3" src="https://weaviate.io/assets/images/executable-run-3-82d7140991d829277c48e441a2c1b76b.png" width="1914" height="419" class="img_ev3q"></p>
<ol start="4">
<li class="">
<p>Instead choose a directory by entering <code>Shift + Command + G</code> and paste the path in the prompt. <code>Click and select the file</code> in the Go to section and <code>press enter</code>.</p>
<p>Your <strong>Run Info</strong> has now been defined!</p>
</li>
</ol>
<p><img decoding="async" loading="lazy" alt="executable-run-4" src="https://weaviate.io/assets/images/executable-run-4-d35f5d1973ce54cb6e819fc5802a246a.png" width="1915" height="419" class="img_ev3q"></p>
<ol start="5">
<li class="">Make sure the <strong>Debug executable</strong> is NOT marked as checked.</li>
</ol>
<p><img decoding="async" loading="lazy" alt="executable-run-5" src="https://weaviate.io/assets/images/executable-run-5-4560f0a48229a622d5ed305ff7e06296.png" width="1688" height="777" class="img_ev3q"></p>
<p><strong>Entry Point (Run Arguments) Arguments Passed on Launch</strong></p>
<p>Define the entry point python script.</p>
<p>It is the script to be launched.</p>
<p>In the <code>Run &gt; Arguments &gt; Arguments Passed On Launch</code> section</p>
<p>Press the + icon and add the python script file name. For this example enter: <code>main.py</code>.</p>
<p><img decoding="async" loading="lazy" alt="run-options-1" src="https://weaviate.io/assets/images/run-options-1-8644c21258fba13abcf074ed6b6f89d3.png" width="1258" height="545" class="img_ev3q"></p>
<p><strong>Entry Point (Run Arguments) Environment Variables - Optional</strong></p>
<p>Include Environment Variables as needed (if any) by the application.</p>
<p>In the example below, Weaviate and OpenAi parameters are required.</p>
<p>Note: <strong>Environment Variables are not required to run our example app</strong>.</p>
<p><img decoding="async" loading="lazy" alt="entry-point-run-args" src="https://weaviate.io/assets/images/entry-point-run-args-63e16e5e63c98ac90944dea679ded70c.png" width="1229" height="902" class="img_ev3q"></p>
<p><strong>Run Options (Working Directory)</strong></p>
<p>Define the working directory in which the python script and other resources related to the application reside.</p>
<p>This is the directory in which the project resides.</p>
<p><code>Run &gt; Options  &gt; Working Directory</code> section</p>
<p>Check the <strong>Use custom working directory</strong> and <strong>click on the arrow</strong> to pop-up a directory for selection.</p>
<p><img decoding="async" loading="lazy" alt="run-options-2" src="https://weaviate.io/assets/images/run-options-2-1bb9704189adc4bd0e172e261021f5ee.png" width="1622" height="1240" class="img_ev3q"></p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="run-python-script">Run Python Script<a href="https://weaviate.io/apple-and-weaviate/apple-apps-part-4#run-python-script" class="hash-link" aria-label="Direct link to Run Python Script" title="Direct link to Run Python Script" translate="no">​</a></h2>
<p>Press ▶️ to run the scheme.</p>
<p><img decoding="async" loading="lazy" alt="run-options-3" src="https://weaviate.io/assets/images/run-options-3-0eb35bd55ab8bec6a53c12d5897d362f.png" width="1436" height="943" class="img_ev3q"></p>
<!-- -->
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="stay-connected">Stay connected<a href="https://weaviate.io/apple-and-weaviate/apple-apps-part-4#stay-connected" class="hash-link" aria-label="Direct link to Stay connected" title="Direct link to Stay connected" translate="no">​</a></h2>
<p>Thank you so much for reading! If you would like to talk to us more about this topic, please connect with us:</p>
<ul>
<li class=""><a href="https://forum.weaviate.io/" target="_blank" rel="noopener noreferrer" class="">Community forum</a></li>
<li class=""><a href="https://github.com/weaviate/weaviate" target="_blank" rel="noopener noreferrer" class="">GitHub</a> Don’t forget to give us a ⭐️!</li>
<li class=""><a href="https://twitter.com/weaviate_io" target="_blank" rel="noopener noreferrer" class="">X (Twitter)</a></li>
<li class=""><a href="https://www.linkedin.com/company/weaviate-io" target="_blank" rel="noopener noreferrer" class="">LinkedIn</a></li>
</ul>
<!-- -->
]]></content>
        <author>
            <name>Randy Fong</name>
            <uri>https://www.linkedin.com/in/randy-fong-1530545/</uri>
        </author>
        <author>
            <name>Adam Chan</name>
            <uri>https://www.linkedin.com/in/itsajchan/</uri>
        </author>
        <category label="iOS" term="iOS"/>
        <category label="mobile app development" term="mobile app development"/>
        <category label="vector databases" term="vector databases"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Running Python on your Mac]]></title>
        <id>https://weaviate.io/apple-and-weaviate/apple-apps-part-3</id>
        <link href="https://weaviate.io/apple-and-weaviate/apple-apps-part-3"/>
        <updated>2024-07-02T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Many data science frameworks are written in Python. In this article we'll get set up to run Python on your Mac!]]></summary>
        <content type="html"><![CDATA[<p><img decoding="async" loading="lazy" alt="Many data science frameworks are written in Python. In this article we&amp;#39;ll get set up to run Python on your Mac!" src="https://weaviate.io/assets/images/python-on-mac-hero-f48bde7617e906e134e72fed26472042.png" width="1200" height="630" class="img_ev3q"></p>
<p>Weaviate and other data science frameworks are making Python a powerful tool for data analysis on the Mac. Get ready to use them in your workflow.</p>
<p><img decoding="async" loading="lazy" alt="overview-python" src="https://weaviate.io/assets/images/overview-python-1a584abbb0f10725dfb011dd87b3b140.png" width="1144" height="849" class="img_ev3q"></p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="python-installed-with-mac-by-apple">Python Installed with Mac by Apple<a href="https://weaviate.io/apple-and-weaviate/apple-apps-part-3#python-installed-with-mac-by-apple" class="hash-link" aria-label="Direct link to Python Installed with Mac by Apple" title="Direct link to Python Installed with Mac by Apple" translate="no">​</a></h2>
<p>Your Mac actually comes with a pre-installed version of Python built-in. This is typically an older version to ensure compatibility with tasks or programs that rely on how Python functioned in earlier macOS versions.</p>
<p>This implementation of Python is maintained by Apple, only.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="python-installed-by-user">Python Installed by User<a href="https://weaviate.io/apple-and-weaviate/apple-apps-part-3#python-installed-by-user" class="hash-link" aria-label="Direct link to Python Installed by User" title="Direct link to Python Installed by User" translate="no">​</a></h2>
<p>Before diving into Python frameworks, you'll need to ensure you have a user installed version of Python installed on your Mac. This acts as the foundation for running these powerful tools.</p>
<p>Multiple Installation Options:</p>
<p>There are several ways to get Python up and running on your Mac:</p>
<ol>
<li class="">
<p>Official Python Installer: Download the latest version directly from the <a href="https://www.python.org/downloads/" target="_blank" rel="noopener noreferrer" class="">Python website</a>. This is a straightforward approach.</p>
</li>
<li class="">
<p><a href="https://anaconda.cloud/getting-started" target="_blank" rel="noopener noreferrer" class="">Anaconda</a>: This popular distribution includes Python along with a vast collection of scientific computing and data science packages. This method simplifies installation and is recommended.</p>
</li>
<li class="">
<p>Homebrew: This package manager allows you to install various software on your Mac, including Python. It offers flexibility for managing multiple Python versions.</p>
</li>
</ol>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="virtual-environment">Virtual Environment<a href="https://weaviate.io/apple-and-weaviate/apple-apps-part-3#virtual-environment" class="hash-link" aria-label="Direct link to Virtual Environment" title="Direct link to Virtual Environment" translate="no">​</a></h2>
<p>Isolating Your Projects with Virtual Environments:</p>
<p>When working on Python projects, each one should have its own virtual environment activated within the project directory. This provides several benefits:</p>
<blockquote>
<p><strong>Dependency Management</strong>: Virtual environments keep package dependencies for each project separate. This prevents conflicts that might arise if different projects require different versions of the same package. Imagine your project01 using the numpy package for calculations, while another project, project02, might use a different library for a different purpose. Virtual environments ensure each project has the exact versions it needs without affecting others.</p>
</blockquote>
<blockquote>
<p><strong>Organization</strong>: Virtual environments help keep your development environment organized. Packages installed for a specific project are contained within its own virtual environment, making it clear which packages belong to which project.</p>
</blockquote>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="example-virtual-environment-for-project01">Example: Virtual Environment for project01<a href="https://weaviate.io/apple-and-weaviate/apple-apps-part-3#example-virtual-environment-for-project01" class="hash-link" aria-label="Direct link to Example: Virtual Environment for project01" title="Direct link to Example: Virtual Environment for project01" translate="no">​</a></h4>
<p>Consider having a project01 directory that includes a volume calculator application. You would need to activate a virtual environment within this directory and install a numpy package specifically for this project. This ensures numpy is available for project01 calculations without affecting other projects on your system.</p>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="creating-a-virtual-environment-for-your-project">Creating a Virtual Environment for Your Project:<a href="https://weaviate.io/apple-and-weaviate/apple-apps-part-3#creating-a-virtual-environment-for-your-project" class="hash-link" aria-label="Direct link to Creating a Virtual Environment for Your Project:" title="Direct link to Creating a Virtual Environment for Your Project:" translate="no">​</a></h4>
<p>Let's walk through setting up a virtual environment for your Python project, assuming you already have user installed version of Python in place. We'll use the project01 directory as an example:</p>
<p>Navigate to the project directory: Open your terminal and use the cd command to switch to the directory containing your project files. For instance, if project01 is on your desktop, you might type...</p>
<p>cd ~/Desktop/project01.</p>
<p><strong>Create the virtual environment</strong>:  Use the following command in your terminal, replacing the last venv parameter with your desired virtual environment name:</p>
<p>python3 -m venv venv</p>
<p>This creates a new directory named venv in your project directory. It contains all the necessary files for a separate Python environment.</p>
<p><strong>Activate the virtual environment</strong>:  Tell your terminal to use the newly created virtual environment.</p>
<p>source venv/bin/activate</p>
<p>Your terminal prompt will likely change to indicate you're now working within the virtual environment.</p>
<p><strong>Install packages within the environment</strong>:  Now you can install Python packages specifically for your project. For example, to install numpy:</p>
<p>pip install numpy</p>
<p>This installs numpy within your virtual environment's isolated space, ensuring it doesn't interfere with other Python projects on your system.</p>
<p>Your project is now ready!  You can proceed with your Python development in project01, confident that the environment has the correct numpy version and any other packages you install specifically for this project.</p>
<p>Remember: <strong>If you close your terminal window</strong>, you'll need to <strong>reactivate the virtual environment</strong> using the source venv/bin/activate command before working on your project again.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="helpful-commands">Helpful Commands<a href="https://weaviate.io/apple-and-weaviate/apple-apps-part-3#helpful-commands" class="hash-link" aria-label="Direct link to Helpful Commands" title="Direct link to Helpful Commands" translate="no">​</a></h2>
<p>Checking Your Python Environment:</p>
<p>These commands help you verify your Python setup:</p>
<p><strong>Version of Python</strong>:</p>
<p>This will display the version of Python currently in use by your terminal.</p>
<p>On my Mac, it currently shows Python 3.11.7.</p>
<p>python --version</p>
<p><strong>Path to Python Executable</strong>:</p>
<p>This will show the location of the Python executable (via an alias) that your terminal is using.</p>
<p>which python</p>
<p><img decoding="async" loading="lazy" alt="which-python" src="https://weaviate.io/assets/images/which-python-cf7a86559ab83f2bad85af8f3f6a1a08.png" width="1175" height="230" class="img_ev3q">
<img decoding="async" loading="lazy" alt="python-alias" src="https://weaviate.io/assets/images/python-alias-ac709561d4eed50e307b284c400e3cec.png" width="1175" height="285" class="img_ev3q"></p>
<p>This path points to an alias rather than an executable, the actual path can be found by right clicking on the alias and selecting Show Original.</p>
<p><img decoding="async" loading="lazy" alt="python-on-disk" src="https://weaviate.io/assets/images/python-on-disk-52213273d490ac3e7771af25b6885796.png" width="1739" height="366" class="img_ev3q"></p>
<p>The output from these commands helps you understand which Python installation your terminal is currently set up to use. This can be important, especially when managing multiple Python versions.</p>
<p>The commands we just reviewed (checking Python version and path) are helpful when we explore using Xcode to run Python scripts in a future article.  Understanding your Python environment is crucial for configuring Xcode to work seamlessly with Python.</p>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="example">Example<a href="https://weaviate.io/apple-and-weaviate/apple-apps-part-3#example" class="hash-link" aria-label="Direct link to Example" title="Direct link to Example" translate="no">​</a></h4>
<p>Here is an example of creating a simple python script and going through the steps of running it on your Mac.</p>
<ol>
<li class="">Create a Python script in your project directory (project01 in this example)</li>
</ol>
<p><img decoding="async" loading="lazy" alt="calc-volume" src="https://weaviate.io/assets/images/calc-volume-1f2e02556ef4a202e1f87b671d318c63.png" width="1934" height="480" class="img_ev3q"></p>
<ol start="2">
<li class="">Open a Terminal console using the Project Directory by <strong>right clicking the project in Finder</strong>.</li>
</ol>
<p><img decoding="async" loading="lazy" alt="folder-to-terminal" src="https://weaviate.io/assets/images/folder-to-terminal-759c721fb617181fdf07d31e7554be1c.png" width="1489" height="1104" class="img_ev3q"></p>
<ol start="3">
<li class="">
<p>Create a Virtual Environment within your Project Directory</p>
<p>python -m venv venv</p>
</li>
</ol>
<p><img decoding="async" loading="lazy" alt="project01-folder" src="https://weaviate.io/assets/images/project01-folder-0bf833b1baadfa27406ba264cdf71a7d.png" width="1331" height="1311" class="img_ev3q"></p>
<ol start="4">
<li class="">
<p>Activate the Virtual Environment</p>
<p>source venv/bin/activate</p>
</li>
<li class="">
<p>Install Python Package(s)</p>
<p>Install package(s) as needed.</p>
<p>pip install numpy</p>
</li>
</ol>
<p><img decoding="async" loading="lazy" alt="install-numpy" src="https://weaviate.io/assets/images/install-numpy-14a08d400061043c76550bf8ca0a482d.png" width="1331" height="824" class="img_ev3q"></p>
<ol start="5">
<li class="">
<p>Download the calcVolume.py Script from <a href="https://github.com/weaviate/BookRecs/blob/main/blog-resources/calcVolume.py" target="_blank" rel="noopener noreferrer" class="">here</a>. Run script.</p>
<p>python calcVolume.py</p>
</li>
</ol>
<p><img decoding="async" loading="lazy" alt="run-calcVolume-script" src="https://weaviate.io/assets/images/run-calcVolume-script-5a4cbe05681fbb9ea96edb757a37206e.png" width="1541" height="225" class="img_ev3q"></p>
<!-- -->
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="stay-connected">Stay connected<a href="https://weaviate.io/apple-and-weaviate/apple-apps-part-3#stay-connected" class="hash-link" aria-label="Direct link to Stay connected" title="Direct link to Stay connected" translate="no">​</a></h2>
<p>Thank you so much for reading! If you would like to talk to us more about this topic, please connect with us:</p>
<ul>
<li class=""><a href="https://forum.weaviate.io/" target="_blank" rel="noopener noreferrer" class="">Community forum</a></li>
<li class=""><a href="https://github.com/weaviate/weaviate" target="_blank" rel="noopener noreferrer" class="">GitHub</a> Don’t forget to give us a ⭐️!</li>
<li class=""><a href="https://twitter.com/weaviate_io" target="_blank" rel="noopener noreferrer" class="">X (Twitter)</a></li>
<li class=""><a href="https://www.linkedin.com/company/weaviate-io" target="_blank" rel="noopener noreferrer" class="">LinkedIn</a></li>
</ul>
<!-- -->
]]></content>
        <author>
            <name>Randy Fong</name>
            <uri>https://www.linkedin.com/in/randy-fong-1530545/</uri>
        </author>
        <author>
            <name>Adam Chan</name>
            <uri>https://www.linkedin.com/in/itsajchan/</uri>
        </author>
        <category label="iOS" term="iOS"/>
        <category label="mac" term="mac"/>
        <category label="apple" term="apple"/>
        <category label="python" term="python"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Unpacking Search Functionality]]></title>
        <id>https://weaviate.io/apple-and-weaviate/apple-apps-part-2</id>
        <link href="https://weaviate.io/apple-and-weaviate/apple-apps-part-2"/>
        <updated>2024-07-02T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Weaviate, like an iPhone app searching your music library, lets you explore your data in multiple ways. This article explores Weaviate's search features including similar item searches, keyword searches, and even combining them for precise results.]]></summary>
        <content type="html"><![CDATA[<p><img decoding="async" loading="lazy" alt="Weaviate, like an iPhone app searching your music library, lets you explore your data in multiple ways. This article explores Weaviate&amp;#39;s search features including similar item searches, keyword searches, and even combining them for precise results." src="https://weaviate.io/assets/images/unpacking-search-hero-11f00e28616d6de267638b4426cfa5e8.png" width="1200" height="630" class="img_ev3q"></p>
<p>Let's unpack Weaviate's search functionalities.</p>
<ul>
<li class="">Vector (similarity)</li>
<li class="">Keyword (exact match)</li>
<li class="">Hybrid (mix of vector and keyword)</li>
</ul>
<p>We will discuss various search methods, from vector similarity for similar searches to keyword-based lookups. We'll even explore how to combine these methods for even more precise results.</p>
<p>In addition, we will go over features like filters and aggregation to fine-tune your searches and get the most out of your Weaviate data.</p>
<p>Included is a Postman collection that can be run to help you understand each of these concepts. Download that from <a href="https://github.com/weaviate/BookRecs/blob/main/blog-resources/postman-weaviate.zip" target="_blank" rel="noopener noreferrer" class="">here</a>.</p>
<h1>What you need</h1>
<ol>
<li class="">OpenAI API Key</li>
</ol>
<p><a href="https://www.howtogeek.com/885918/how-to-get-an-openai-api-key/" target="_blank" rel="noopener noreferrer" class="">https://www.howtogeek.com/885918/how-to-get-an-openai-api-key/</a></p>
<ol start="2">
<li class="">Postman</li>
</ol>
<p>Download the Mac version or run from the <a href="https://www.postman.com/downloads/" target="_blank" rel="noopener noreferrer" class="">Postman website</a>.</p>
<ol start="3">
<li class="">A Mac to run the Postman App</li>
</ol>
<p>A Weaviate Vector Database of Books is already included to run your Postman queries on.</p>
<h1>Search Features</h1>
<p>Weaviate offers various search features.</p>
<p><strong>Vector search</strong> finds similar items based on vector representations.</p>
<p><strong>Best Match (BM25)</strong> search takes into account the frequency in which a keyword appears in a text.</p>
<p><strong>Conditional Filters</strong> look for an exact match for a given property.</p>
<p><strong>Hybrid search</strong> is a combination of vector and keyword searches.</p>
<p>There are <strong>miscellaneous search features</strong> that can be applied, too.  Such as sorting records and tallying of a count according to a property value grouping.</p>
<p>A Postman query has been created for each of these scenarios for you to try out as shown in the outline on the right.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="vector-similarity-search">Vector Similarity Search<a href="https://weaviate.io/apple-and-weaviate/apple-apps-part-2#vector-similarity-search" class="hash-link" aria-label="Direct link to Vector Similarity Search" title="Direct link to Vector Similarity Search" translate="no">​</a></h2>
<p>Imagine you have a giant library with books described by numbers instead of words.  A vector similarity search is like a special tool that helps you find books similar to the one you're holding by comparing their numbers. It's faster than reading every book description and works well for things like finding similar images or recommending products.</p>
<p>Let's say you're in the library and love a particular mystery novel. This book can be represented by a vector, a fancy way of saying it's a bunch of numbers that capture information about the book. These numbers might encode things like genre, character count, or how many times certain words appear.</p>
<p>Now, you want to find other similar mystery novels. The library (or the Weaviate platform in this case) uses the same kind of number code (vector) for all the books. The search tool then compares the vector of your favorite book to all the others. Books with similar vectors, meaning their numbers are close together, are likely similar mystery novels you might enjoy. This way, you can find new reads without sifting through every single book description.</p>
<p><a href="https://docs.weaviate.io/weaviate/search/similarity" target="_blank" rel="noopener noreferrer" class="">https://docs.weaviate.io/weaviate/search/similarity</a></p>
<p><img decoding="async" loading="lazy" alt="vector-similarity-search" src="https://weaviate.io/assets/images/vector-search-df4f1a490a51f919b26faa36f9aecd59.png" width="1032" height="871" class="img_ev3q"></p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="best-match-bm25-search">Best Match (BM25) Search<a href="https://weaviate.io/apple-and-weaviate/apple-apps-part-2#best-match-bm25-search" class="hash-link" aria-label="Direct link to Best Match (BM25) Search" title="Direct link to Best Match (BM25) Search" translate="no">​</a></h2>
<p>When a user submits a BM25 query, Weaviate will look for objects that contain the search terms in the text properties of the objects. Then, it will rank the results based on how many times the search terms appear in the text properties of the objects.</p>
<p><a href="https://docs.weaviate.io/weaviate/search/bm25" target="_blank" rel="noopener noreferrer" class="">https://docs.weaviate.io/weaviate/search/bm25</a></p>
<p><img decoding="async" loading="lazy" alt="best-match-25-search" src="https://weaviate.io/assets/images/best-match-25-925f984210952a6705176ec681ae99b9.png" width="1318" height="864" class="img_ev3q"></p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="conditional-exact-match-filter-search">Conditional Exact Match Filter Search<a href="https://weaviate.io/apple-and-weaviate/apple-apps-part-2#conditional-exact-match-filter-search" class="hash-link" aria-label="Direct link to Conditional Exact Match Filter Search" title="Direct link to Conditional Exact Match Filter Search" translate="no">​</a></h2>
<p>An exact match search filter consists of one or more conditions, which are combined using the <strong>And</strong> or <strong>Or</strong> operators. Each condition consists of a property path, an operator, and a value.</p>
<p>Another variation of this feature is applying a condition to a list of properties, rather than a single property. This is done through the <strong>ContainsAll</strong> and <strong>ContainsAny</strong> operators.</p>
<p><a href="https://docs.weaviate.io/weaviate/api/graphql/filters" target="_blank" rel="noopener noreferrer" class="">https://docs.weaviate.io/weaviate/api/graphql/filters</a></p>
<p><img decoding="async" loading="lazy" alt="conditional-exact-match-filters" src="https://weaviate.io/assets/images/conditional-exact-match-filters-2ade930e2886e8070a1c8eeb5b39f18e.png" width="1246" height="1233" class="img_ev3q"></p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="hybrid-search">Hybrid Search<a href="https://weaviate.io/apple-and-weaviate/apple-apps-part-2#hybrid-search" class="hash-link" aria-label="Direct link to Hybrid Search" title="Direct link to Hybrid Search" translate="no">​</a></h2>
<p>A hybrid search combines two different search techniques: keyword-based search and semantic vector search.</p>
<p><a href="https://docs.weaviate.io/weaviate/search/hybrid" target="_blank" rel="noopener noreferrer" class="">https://docs.weaviate.io/weaviate/search/hybrid</a></p>
<p>These are the two major concepts.</p>
<ul>
<li class=""><strong>Keyword-based search</strong> is the traditional method used by most search engines. It works by matching keywords in your query to keywords in the documents or data being searched. This can be effective for finding exact matches,but it can also lead to irrelevant results if the query uses different words or phrases than the documents.</li>
<li class=""><strong>Semantic search</strong> tries to understand the meaning of your query and the meaning of the documents or data being searched. It does this by using techniques like natural language processing and machine learning. This can help to find more relevant results, even if the query doesn't use the same words or phrases as the documents.</li>
</ul>
<p>Hybrid search combines the strengths of both of these techniques. It can find exact matches using keyword search, and it can also find relevant results that use different words or phrases using semantic search. This can lead to more accurate and relevant search results overall.</p>
<p>Here are some of the advantages of hybrid search:</p>
<ul>
<li class=""><strong>More relevant</strong> results: Hybrid search can help to surface more relevant results, even if the query doesn't use the same words or phrases as the documents.</li>
<li class=""><strong>Improved accuracy</strong>: By combining keyword-based and semantic search, hybrid search can provide more accurate results than either technique alone.</li>
<li class=""><strong>Better user experience</strong>: Hybrid search can lead to a better user experience by providing more relevant and accurate results.</li>
</ul>
<p>Hybrid search is becoming increasingly popular in a variety of applications, including:</p>
<ul>
<li class=""><strong>E-commerce search</strong>: Hybrid search can help shoppers find the products they're looking for, even if they don't know the exact names of the products.</li>
<li class=""><strong>Enterprise search</strong>: Hybrid search can help employees find the information they need more quickly and easily.</li>
<li class=""><strong>Customer service</strong>: Hybrid search can help customer service representatives find the answers to customer questions more quickly.</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="miscellaneous">Miscellaneous<a href="https://weaviate.io/apple-and-weaviate/apple-apps-part-2#miscellaneous" class="hash-link" aria-label="Direct link to Miscellaneous" title="Direct link to Miscellaneous" translate="no">​</a></h2>
<p>Various scenarios and use cases.</p>
<ul>
<li class="">Sort</li>
<li class="">Aggregate Count by Grouping</li>
</ul>
<p><a href="https://docs.weaviate.io/weaviate/search/aggregate" target="_blank" rel="noopener noreferrer" class="">https://docs.weaviate.io/weaviate/search/aggregate</a></p>
<h1>Tips on Working with Queries</h1>
<p>When constructing queries there are some things to keep in mind.</p>
<p>Formatting queries can can result in frustrating errors when constructing them by hand.</p>
<p>Invisible escape characters and formatting gotchas can ruin what looks to be a syntactically correct query.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="query-advice">Query Advice<a href="https://weaviate.io/apple-and-weaviate/apple-apps-part-2#query-advice" class="hash-link" aria-label="Direct link to Query Advice" title="Direct link to Query Advice" translate="no">​</a></h2>
<ol>
<li class="">
<p>Quotation marks (“) need to be proceeded by a backslash () when placed within a query parameter.eg. concepts:</p>
<p>["Search for mysteries set in Western Europe.\”]</p>
</li>
<li class="">
<p>Use an online formatter such as the GraphQL Formatter to make reading a query easier and to catch syntax issues. Remove any backslashes(“\”) beforehand.</p>
</li>
<li class="">
<p>Before running a query, line breaks need to be removed.</p>
<p>The Remove Line Breaks online tool helps resolve this problem.</p>
<p>Removing extraneous spaces are also recommended. Sometimes they include hidden format characters.</p>
<p>eg. ”{Get {Book(limit: 10 nearText: {concepts: ["Search for mysteries set in Western Europe."]} ) {title description _additional {certainty distance}}}}"</p>
</li>
<li class="">
<p>Don’t create prompts using ONLY stopwords.</p>
<p>Stopwords are common words like "the", "a", "an", "is", “in", “of”, etc. Search algorithms typically filter out stopwords because they don't provide much meaning in the context of a search.</p>
<p>For example, searching for "the cat" would likely filter out "the" as a stopword and focus on finding results related to "cat".</p>
</li>
</ol>
<h1>Helpful Online Tools</h1>
<p>There are a couple of free online formatting tools to help you construct as well as inspect queries.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="graphql-formatter">GraphQL Formatter<a href="https://weaviate.io/apple-and-weaviate/apple-apps-part-2#graphql-formatter" class="hash-link" aria-label="Direct link to GraphQL Formatter" title="Direct link to GraphQL Formatter" translate="no">​</a></h2>
<p>Inspects queries and formats them into a more readable format.</p>
<p>Also checks for GraphQL format completeness.</p>
<p><a href="https://jsonformatter.org/graphql-formatter" target="_blank" rel="noopener noreferrer" class="">https://jsonformatter.org/graphql-formatter</a></p>
<p><img decoding="async" loading="lazy" alt="helpful-online-formatter-1" src="https://weaviate.io/assets/images/helpful-json-formatter-1-7f062f575ed654275aa6e49b40f75f17.png" width="1308" height="487" class="img_ev3q">
<img decoding="async" loading="lazy" alt="helpful-online-formatter-output" src="https://weaviate.io/assets/images/helpful-json-formatter-output-5e8145668e8c6e66b400ddd60e83ed23.png" width="1308" height="966" class="img_ev3q"></p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="remove-line-breaks">Remove Line Breaks<a href="https://weaviate.io/apple-and-weaviate/apple-apps-part-2#remove-line-breaks" class="hash-link" aria-label="Direct link to Remove Line Breaks" title="Direct link to Remove Line Breaks" translate="no">​</a></h2>
<p>Prepares a query to be run by removing line breaks.</p>
<p><a href="https://www.textfixer.com/tools/remove-line-breaks.php" target="_blank" rel="noopener noreferrer" class="">https://www.textfixer.com/tools/remove-line-breaks.php</a></p>
<p><img decoding="async" loading="lazy" alt="remove-line-breaks" src="https://weaviate.io/assets/images/remove-line-breaks-ad259501587c305aba621019c094e109.png" width="1308" height="1301" class="img_ev3q"></p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="postman-examples">Postman Examples<a href="https://weaviate.io/apple-and-weaviate/apple-apps-part-2#postman-examples" class="hash-link" aria-label="Direct link to Postman Examples" title="Direct link to Postman Examples" translate="no">​</a></h2>
<p>Use the included Postman Workspace to run common Weaviate GraphQL queries against a live database.</p>
<p>Only the OpenAi needs to be entered, if using the database in the example.</p>
<p>If you are using you own cluster, both Weaviate parameters need to be entered, also.</p>
<p><img decoding="async" loading="lazy" alt="postman" src="https://weaviate.io/assets/images/postman-tool-4194b1fe394e135cc5c90c40160934aa.png" width="1477" height="524" class="img_ev3q"></p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="weaviate-parameters">Weaviate Parameters<a href="https://weaviate.io/apple-and-weaviate/apple-apps-part-2#weaviate-parameters" class="hash-link" aria-label="Direct link to Weaviate Parameters" title="Direct link to Weaviate Parameters" translate="no">​</a></h2>
<p>From the <a href="https://console.weaviate.cloud/" target="_blank" rel="noopener noreferrer" class="">Weaviate Cloud Console dashboard</a> find the associated parameters for the cluster.</p>
<p><strong>WEAVIATE_API_KEY</strong></p>
<p>The cluster API Key.</p>
<p><img decoding="async" loading="lazy" alt="weaviate-api-key-button" src="https://weaviate.io/assets/images/get-weaviate-key1-8929501f513b4046994eecf79dbd1f58.png" width="1568" height="320" class="img_ev3q">
<img decoding="async" loading="lazy" alt="weaviate-api-key" src="https://weaviate.io/assets/images/get-weaviate-key2-cf59895965801b78a22989696068119c.png" width="1568" height="718" class="img_ev3q"></p>
<p><strong>URL_TO_WEAVIATE</strong></p>
<p>The Cluster REST endpoint, plus <code>v1/graphql</code> added to the endpoint.</p>
<p><img decoding="async" loading="lazy" alt="weaviate-cluster-url" src="https://weaviate.io/assets/images/get-weaviate-cluster-url-9c93e5e1086b44fc8f4450beb7526100.png" width="1582" height="424" class="img_ev3q"></p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="enter-your-open-ai-key">Enter your Open AI Key<a href="https://weaviate.io/apple-and-weaviate/apple-apps-part-2#enter-your-open-ai-key" class="hash-link" aria-label="Direct link to Enter your Open AI Key" title="Direct link to Enter your Open AI Key" translate="no">​</a></h2>
<p>This key is needed to access Open AI to make sense of your prompt.</p>
<p>Here is how you can set one up.</p>
<p><a href="https://www.howtogeek.com/885918/how-to-get-an-openai-api-key/" target="_blank" rel="noopener noreferrer" class="">https://www.howtogeek.com/885918/how-to-get-an-openai-api-key/</a></p>
<p>Enter the key value in the variable section of Postman for your collection.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="queries">Queries<a href="https://weaviate.io/apple-and-weaviate/apple-apps-part-2#queries" class="hash-link" aria-label="Direct link to Queries" title="Direct link to Queries" translate="no">​</a></h2>
<p>A list of queries are listed to the right.</p>
<p>Each is fully documented and can be run as is after entering your OpenAI Key.</p>
<p><img decoding="async" loading="lazy" alt="postman-weaviate-collection" src="https://weaviate.io/assets/images/postman-weaviate-collection-48bc73a456677937e7e0b277ece5fb40.png" width="1369" height="736" class="img_ev3q"></p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="query-documentation">Query Documentation<a href="https://weaviate.io/apple-and-weaviate/apple-apps-part-2#query-documentation" class="hash-link" aria-label="Direct link to Query Documentation" title="Direct link to Query Documentation" translate="no">​</a></h2>
<p>Each query includes an explanation of what the high level (numbered 1-5) search feature does as well as a formatted example of the query to read.</p>
<p>A link to the corresponding Weaviate API documentation from which this information is mostly borrowed from is included.</p>
<p><img decoding="async" loading="lazy" alt="weaviate-query-docs" src="https://weaviate.io/assets/images/vector-search-and-postman-2b1233325985877fdb067e840d0089f2.png" width="1582" height="907" class="img_ev3q"></p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="postman-query">Postman Query<a href="https://weaviate.io/apple-and-weaviate/apple-apps-part-2#postman-query" class="hash-link" aria-label="Direct link to Postman Query" title="Direct link to Postman Query" translate="no">​</a></h2>
<p>Each query runs as is.</p>
<p>Don’t forget to enter your OpenAI Key for your collection beforehand!</p>
<p>They also work great as templates should you want to create a query for you own project, too.</p>
<p><img decoding="async" loading="lazy" alt="postman-query" src="https://weaviate.io/assets/images/postman-query-2787975a9d754faa356c03d6e2c5d660.png" width="1449" height="2037" class="img_ev3q"></p>
<!-- -->
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="stay-connected">Stay connected<a href="https://weaviate.io/apple-and-weaviate/apple-apps-part-2#stay-connected" class="hash-link" aria-label="Direct link to Stay connected" title="Direct link to Stay connected" translate="no">​</a></h2>
<p>Thank you so much for reading! If you would like to talk to us more about this topic, please connect with us:</p>
<ul>
<li class=""><a href="https://forum.weaviate.io/" target="_blank" rel="noopener noreferrer" class="">Community forum</a></li>
<li class=""><a href="https://github.com/weaviate/weaviate" target="_blank" rel="noopener noreferrer" class="">GitHub</a> Don’t forget to give us a ⭐️!</li>
<li class=""><a href="https://twitter.com/weaviate_io" target="_blank" rel="noopener noreferrer" class="">X (Twitter)</a></li>
<li class=""><a href="https://www.linkedin.com/company/weaviate-io" target="_blank" rel="noopener noreferrer" class="">LinkedIn</a></li>
</ul>
<!-- -->
]]></content>
        <author>
            <name>Randy Fong</name>
            <uri>https://www.linkedin.com/in/randy-fong-1530545/</uri>
        </author>
        <author>
            <name>Adam Chan</name>
            <uri>https://www.linkedin.com/in/itsajchan/</uri>
        </author>
        <category label="search" term="search"/>
        <category label="vector search" term="vector search"/>
        <category label="vector databases" term="vector databases"/>
        <category label="hybrid search" term="hybrid search"/>
        <category label="keyword search" term="keyword search"/>
    </entry>
</feed>