diff options
author | tmartins <thigm85@gmail.com> | 2020-08-13 10:56:09 +0200 |
---|---|---|
committer | tmartins <thigm85@gmail.com> | 2020-08-13 10:56:09 +0200 |
commit | 99761fb3079023ab45a169e46344bad54e767ec8 (patch) | |
tree | d14eec33bd928beb3441ddcd5bf92ed2f239476b /python | |
parent | cf19966f742bdca408272dd318f63870e8bbc9f6 (diff) |
add notebook to create and deploy package
Diffstat (limited to 'python')
-rw-r--r-- | python/vespa/notebooks/create-and-deploy-vespa.ipynb | 167 |
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 +} |