firebase-retrievers

command
v0.5.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 18, 2025 License: Apache-2.0 Imports: 10 Imported by: 0

README

Genkit Firestore Example

This sample demonstrates how to index and retrieve documents using Firestore and Genkit. The documents contain text about famous films, and users can query the indexed documents to retrieve information based on their input.

Currently the sample uses a mock embedder for simplicity. In your applications you will want to use an actual embedder from genkit.

Prerequisites

Before running the sample, ensure you have the following:

  1. Google Cloud Project: You must have a Google Cloud project with Firestore enabled.

  2. Genkit: Installed and set up in your local environment.

  3. Authentication & Credentials: Ensure you are authenticated with your Google Cloud project using the following command:

    gcloud auth application-default login
    
  4. Firestore Composite Index: You need to create a composite vector index in Firestore for the embedding field. You can do this by running the following curl command:

    curl -X POST      "https://firestore.googleapis.com/v1/projects/<YOUR_PROJECT_ID>/databases/(default)/collectionGroups/<YOUR_COLLECTION>/indexes"      -H "Authorization: Bearer $(gcloud auth print-access-token)"      -H "Content-Type: application/json"      -d '{
        "fields": [
          {
            "fieldPath": "embedding",
            "vectorConfig": {
              "dimension": 3,
              "flat": {}
            }
          }
        ],
        "queryScope": "COLLECTION"
      }'
    

    Replace <YOUR_PROJECT_ID> and <YOUR_COLLECTION> with your actual project and collection names.

Environment Variables

You need to set the following environment variables before running the project:

  • FIREBASE_PROJECT_ID: The ID of your Google Cloud project.
  • FIRESTORE_COLLECTION: The name of the Firestore collection to use for storing and retrieving documents.

You can set these variables by running:

export FIREBASE_PROJECT_ID=your-project-id
export FIRESTORE_COLLECTION=your-collection-name

Running the Project

Once the environment is set up, follow these steps:

  1. Start Genkit: Run the following command to start the Genkit server:

    genkit start
    
  2. Index Documents: To index the 10 documents with text about famous films, run the following Genkit flow:

    curl -X POST http://localhost:4000/api/runAction -H "Content-Type: application/json" -d '{"key":"/flow/flow-index-documents"}'
    

    This will insert 10 documents into the Firestore collection.

  3. Retrieve Documents: To query the indexed documents, run the following Genkit flow and pass your query as input:

    curl -X POST http://localhost:4000/api/runAction -H "Content-Type: application/json" -d '{"key":"/flow/flow-retrieve-documents", "input": "crime film"}'
    

    You can replace "crime film" with any other query related to the indexed film documents.

Troubleshooting

  1. Firestore Composite Index: Ensure the Firestore composite index for the embedding field is correctly set up, otherwise queries may fail.
  2. Environment Variables: Make sure that the FIREBASE_PROJECT_ID and FIRESTORE_COLLECTION environment variables are correctly exported.

License

Copyright 2024 Google LLC

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

Documentation

The Go Gopher

There is no documentation for this package.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL