summaryrefslogtreecommitdiffstats
path: root/python
diff options
context:
space:
mode:
authortmartins <thigm85@gmail.com>2020-08-13 10:56:09 +0200
committertmartins <thigm85@gmail.com>2020-08-13 10:56:09 +0200
commit99761fb3079023ab45a169e46344bad54e767ec8 (patch)
treed14eec33bd928beb3441ddcd5bf92ed2f239476b /python
parentcf19966f742bdca408272dd318f63870e8bbc9f6 (diff)
add notebook to create and deploy package
Diffstat (limited to 'python')
-rw-r--r--python/vespa/notebooks/create-and-deploy-vespa.ipynb167
1 files changed, 167 insertions, 0 deletions
diff --git a/python/vespa/notebooks/create-and-deploy-vespa.ipynb b/python/vespa/notebooks/create-and-deploy-vespa.ipynb
new file mode 100644
index 00000000000..bb98d5fd091
--- /dev/null
+++ b/python/vespa/notebooks/create-and-deploy-vespa.ipynb
@@ -0,0 +1,167 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Vespa - Application Package\n",
+ "\n",
+ "> Python API to create, modify and deploy application packages\n",
+ "\n",
+ "[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/vespa-engine/vespa/blob/tgm/pyvespa-tutorial/python/vespa/notebooks/create-and-deploy-vespa.ipynb)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Our goal is to create, modify and deploy simple application packages using our python API. This enables us to run data analysis experiments that are fully integrated with Vespa. As an example, we want to create the application package we used in our [text search tutorial](https://docs.vespa.ai/documentation/tutorials/text-search.html). "
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Application spec"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Our goal in this section is to create the following `msmarco` schema using our python API."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "```\n",
+ "schema msmarco {\n",
+ " document msmarco {\n",
+ " field id type string {\n",
+ " indexing: attribute | summary\n",
+ " }\n",
+ " field title type string {\n",
+ " indexing: index | summary\n",
+ " index: enable-bm25\n",
+ " }\n",
+ " field body type string {\n",
+ " indexing: index | summary\n",
+ " index: enable-bm25\n",
+ " }\n",
+ " }\n",
+ "\n",
+ " fieldset default {\n",
+ " fields: title, body\n",
+ " }\n",
+ "\n",
+ " rank-profile default {\n",
+ " first-phase {\n",
+ " expression: nativeRank(title, body)\n",
+ " }\n",
+ " }\n",
+ "\n",
+ " rank-profile bm25 inherits default {\n",
+ " first-phase {\n",
+ " expression: bm25(title) + bm25(body)\n",
+ " }\n",
+ " }\n",
+ "\n",
+ "}\n",
+ "```"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Schema API"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "from vespa.package import Document, Field, Schema, FieldSet, RankProfile, ApplicationPackage\n",
+ "\n",
+ "document = Document(\n",
+ " fields=[\n",
+ " Field(name = \"id\", type = \"string\", indexing = [\"attribute\", \"summary\"]),\n",
+ " Field(name = \"title\", type = \"string\", indexing = [\"index\", \"summary\"], index = \"enable-bm25\"),\n",
+ " Field(name = \"body\", type = \"string\", indexing = [\"index\", \"summary\"], index = \"enable-bm25\") \n",
+ " ]\n",
+ ")\n",
+ "\n",
+ "msmarco_schema = Schema(\n",
+ " name = \"msmarco\", \n",
+ " document = document, \n",
+ " fieldsets = [FieldSet(name = \"default\", fields = [\"title\", \"body\"])],\n",
+ " rank_profiles = [RankProfile(name = \"default\", first_phase = \"nativeRank(title, body)\")]\n",
+ ")\n",
+ "\n",
+ "app_package = ApplicationPackage(name = \"msmarco\", schema=msmarco_schema)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Deploy it locally"
+ ]
+ },
+ {
+ "cell_type": "raw",
+ "metadata": {},
+ "source": [
+ "from vespa.package import VespaDocker\n",
+ "\n",
+ "vespa_docker = VespaDocker(application_package=app_package)\n",
+ "vespa_docker.deploy(disk_folder=\"/Users/username/sample_application\")"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Change the application package and redeploy"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "We can add a new rank profile and redeploy our application"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "app_package.schema.add_rank_profile(\n",
+ " RankProfile(name = \"bm25\", inherits = \"default\", first_phase = \"bm25(title) + bm25(body)\")\n",
+ ")"
+ ]
+ },
+ {
+ "cell_type": "raw",
+ "metadata": {},
+ "source": [
+ "vespa_docker.deploy(disk_folder=\"/Users/username/sample_application\")"
+ ]
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "vespa",
+ "language": "python",
+ "name": "vespa"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 2
+}