Regarding indexes, performance and deletions

Sorry in advance if I have overlooked relevant docs.

Question 1: Indexes and performance

In SQL, it’s common to add field created_by and created_time to records. We have a lightweight RAG app, and while I understand Weaviate shouldn’t be the source of truth, it’s the only DB in the system. Will adding these fields add overhead to the DB performance (ie. they are indexed)?

In general, are all schema fields indexed? If so, that adds memory overhead, right?

Question 2: Batch deletes and ID lookups

Is there any speed advantage to doing batch deletes by ID? If so, what is the syntax? You show how to do it with an arbitrary where (Delete objects | Weaviate - vector database)

client.batch.delete_objects(
    class_name='EphemeralObject',
    where={
        'path': ['name'],
        'operator': 'Equals',
        'valueText': 'foo-record'
    },
)

I am trying to delete 15 or so records. I have their IDs, but can also delete them by Name as shown above. Traditional DB systems are more performant if removing by ID (the primary key). But what is the optimal way to do it in weaviate?

How does Equals performance compare to doing a containsAll delete of a list of IDs (is that even possible)?

Hmm actually it looks like timestamps are automatically added to the object by weaviate

This was answered in the slack channel

Hi @Adam_Hughes !

Really sorry. Missed this one :frowning:

Glad you found the answer one way or another :sweat_smile:

We plan on expanding our Recipes and this kind of examples are a great one.

Thanks for sharing!