Skip to content

Conversation

shanbady
Copy link
Contributor

@shanbady shanbady commented Apr 29, 2025

What are the relevant tickets?

Closes https://github.com/mitodl/hq/issues/6754

Description (What does it do?)

This PR introduces updates/upserts and removals for embedding vectors.

The main changes:

For contentfiles

  1. the original "checksum" attribute on contentfiles has been renamed to "archive_checksum" to maintain functionality in how the ETL uses it to check tar file checksums.
  2. the new "checksum" attribute contentfiles is a checksum of the content attribute which gets generated on each save
  3. When generating embeddings for contentfiles, the checksum is used to determine if the contentfile has changed. If so all existing chunks for that contentfile are removed. The file is then re-chunked and re-embedded.
  4. If the content checksum is the same - regeneration of the embedding is skipped but the "metadata"/attributes are upserted - this accounts for cases where the content has not changed but there may have been updates to some other attributes.

For resources

  1. The embedding context is just the "{title} {description} {full description}" which we check against to see if it needs updating.

How can this be tested?

testing the etl hooks

  1. checkout this branch
  2. in settings.py set QDRANT_ENABLE_INDEXING_PLUGIN_HOOKS to True
  3. restart celery
  4. (optional step - makes it easier to see something happened) visit your local qdrant dashboard and delete both collections
  5. run any backpopulate management command like python manage.py backpopulate_micromasters_data
  6. you should see the qdrant records getting populated with learning resources that have been pulled down, updated or removed.

For reference, here is a list of things that this PR (and functionality before it) should ensure:

  • New Learning resources are embedded. New contentfiles are chunked and embedded as new records.
  • When contentfile contents are changed, old points are removed and the contentfile is re-chunked and embedded
  • regardless of changes to embedding content (for both contentfiles and learning resources) updates to indexed metadata fields are still applied.
  • when contentfiles or learning resources are unpublished/deleted, the associated records are removed from qdrant

Copy link

OpenAPI Changes

Show/hide 16 changes: 0 error, 0 warning, 16 info
16 changes: 0 error, 0 warning, 16 info
info	[response-optional-property-added] at head/openapi/specs/v0.yaml	
	in API GET /api/v0/vector_content_files_search/
		added the optional property 'results/items/archive_checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v0.yaml	
	in API GET /api/v0/vector_content_files_search/
		added the optional property 'results/items/checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/content_file_search/
		added the optional property 'results/items/archive_checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/content_file_search/
		added the optional property 'results/items/checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/contentfiles/
		added the optional property 'results/items/archive_checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/contentfiles/
		added the optional property 'results/items/checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/contentfiles/{id}/
		added the optional property 'archive_checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/contentfiles/{id}/
		added the optional property 'checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/courses/{learning_resource_id}/contentfiles/
		added the optional property 'results/items/archive_checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/courses/{learning_resource_id}/contentfiles/
		added the optional property 'results/items/checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/courses/{learning_resource_id}/contentfiles/{id}/
		added the optional property 'archive_checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/courses/{learning_resource_id}/contentfiles/{id}/
		added the optional property 'checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learning_resources/{learning_resource_id}/contentfiles/
		added the optional property 'results/items/archive_checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learning_resources/{learning_resource_id}/contentfiles/
		added the optional property 'results/items/checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learning_resources/{learning_resource_id}/contentfiles/{id}/
		added the optional property 'archive_checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learning_resources/{learning_resource_id}/contentfiles/{id}/
		added the optional property 'checksum' to the response with the '200' status


Copy link

OpenAPI Changes

Show/hide 16 changes: 0 error, 0 warning, 16 info
16 changes: 0 error, 0 warning, 16 info
info	[response-optional-property-added] at head/openapi/specs/v0.yaml	
	in API GET /api/v0/vector_content_files_search/
		added the optional property 'results/items/archive_checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v0.yaml	
	in API GET /api/v0/vector_content_files_search/
		added the optional property 'results/items/checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/content_file_search/
		added the optional property 'results/items/archive_checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/content_file_search/
		added the optional property 'results/items/checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/contentfiles/
		added the optional property 'results/items/archive_checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/contentfiles/
		added the optional property 'results/items/checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/contentfiles/{id}/
		added the optional property 'archive_checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/contentfiles/{id}/
		added the optional property 'checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/courses/{learning_resource_id}/contentfiles/
		added the optional property 'results/items/archive_checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/courses/{learning_resource_id}/contentfiles/
		added the optional property 'results/items/checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/courses/{learning_resource_id}/contentfiles/{id}/
		added the optional property 'archive_checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/courses/{learning_resource_id}/contentfiles/{id}/
		added the optional property 'checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learning_resources/{learning_resource_id}/contentfiles/
		added the optional property 'results/items/archive_checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learning_resources/{learning_resource_id}/contentfiles/
		added the optional property 'results/items/checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learning_resources/{learning_resource_id}/contentfiles/{id}/
		added the optional property 'archive_checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learning_resources/{learning_resource_id}/contentfiles/{id}/
		added the optional property 'checksum' to the response with the '200' status


Copy link

OpenAPI Changes

Show/hide 16 changes: 0 error, 0 warning, 16 info
16 changes: 0 error, 0 warning, 16 info
info	[response-optional-property-added] at head/openapi/specs/v0.yaml	
	in API GET /api/v0/vector_content_files_search/
		added the optional property 'results/items/archive_checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v0.yaml	
	in API GET /api/v0/vector_content_files_search/
		added the optional property 'results/items/checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/content_file_search/
		added the optional property 'results/items/archive_checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/content_file_search/
		added the optional property 'results/items/checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/contentfiles/
		added the optional property 'results/items/archive_checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/contentfiles/
		added the optional property 'results/items/checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/contentfiles/{id}/
		added the optional property 'archive_checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/contentfiles/{id}/
		added the optional property 'checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/courses/{learning_resource_id}/contentfiles/
		added the optional property 'results/items/archive_checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/courses/{learning_resource_id}/contentfiles/
		added the optional property 'results/items/checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/courses/{learning_resource_id}/contentfiles/{id}/
		added the optional property 'archive_checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/courses/{learning_resource_id}/contentfiles/{id}/
		added the optional property 'checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learning_resources/{learning_resource_id}/contentfiles/
		added the optional property 'results/items/archive_checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learning_resources/{learning_resource_id}/contentfiles/
		added the optional property 'results/items/checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learning_resources/{learning_resource_id}/contentfiles/{id}/
		added the optional property 'archive_checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learning_resources/{learning_resource_id}/contentfiles/{id}/
		added the optional property 'checksum' to the response with the '200' status


Copy link

OpenAPI Changes

Show/hide 16 changes: 0 error, 0 warning, 16 info
16 changes: 0 error, 0 warning, 16 info
info	[response-optional-property-added] at head/openapi/specs/v0.yaml	
	in API GET /api/v0/vector_content_files_search/
		added the optional property 'results/items/archive_checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v0.yaml	
	in API GET /api/v0/vector_content_files_search/
		added the optional property 'results/items/checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/content_file_search/
		added the optional property 'results/items/archive_checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/content_file_search/
		added the optional property 'results/items/checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/contentfiles/
		added the optional property 'results/items/archive_checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/contentfiles/
		added the optional property 'results/items/checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/contentfiles/{id}/
		added the optional property 'archive_checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/contentfiles/{id}/
		added the optional property 'checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/courses/{learning_resource_id}/contentfiles/
		added the optional property 'results/items/archive_checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/courses/{learning_resource_id}/contentfiles/
		added the optional property 'results/items/checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/courses/{learning_resource_id}/contentfiles/{id}/
		added the optional property 'archive_checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/courses/{learning_resource_id}/contentfiles/{id}/
		added the optional property 'checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learning_resources/{learning_resource_id}/contentfiles/
		added the optional property 'results/items/archive_checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learning_resources/{learning_resource_id}/contentfiles/
		added the optional property 'results/items/checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learning_resources/{learning_resource_id}/contentfiles/{id}/
		added the optional property 'archive_checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learning_resources/{learning_resource_id}/contentfiles/{id}/
		added the optional property 'checksum' to the response with the '200' status


Copy link

OpenAPI Changes

Show/hide 16 changes: 0 error, 0 warning, 16 info
16 changes: 0 error, 0 warning, 16 info
info	[response-optional-property-added] at head/openapi/specs/v0.yaml	
	in API GET /api/v0/vector_content_files_search/
		added the optional property 'results/items/archive_checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v0.yaml	
	in API GET /api/v0/vector_content_files_search/
		added the optional property 'results/items/checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/content_file_search/
		added the optional property 'results/items/archive_checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/content_file_search/
		added the optional property 'results/items/checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/contentfiles/
		added the optional property 'results/items/archive_checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/contentfiles/
		added the optional property 'results/items/checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/contentfiles/{id}/
		added the optional property 'archive_checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/contentfiles/{id}/
		added the optional property 'checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/courses/{learning_resource_id}/contentfiles/
		added the optional property 'results/items/archive_checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/courses/{learning_resource_id}/contentfiles/
		added the optional property 'results/items/checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/courses/{learning_resource_id}/contentfiles/{id}/
		added the optional property 'archive_checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/courses/{learning_resource_id}/contentfiles/{id}/
		added the optional property 'checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learning_resources/{learning_resource_id}/contentfiles/
		added the optional property 'results/items/archive_checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learning_resources/{learning_resource_id}/contentfiles/
		added the optional property 'results/items/checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learning_resources/{learning_resource_id}/contentfiles/{id}/
		added the optional property 'archive_checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learning_resources/{learning_resource_id}/contentfiles/{id}/
		added the optional property 'checksum' to the response with the '200' status


Copy link
Contributor

@abeglova abeglova left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This seems to work well although i haven't tested it will a delete or update for existing vectors. I will figure out how to test that out. In the meantime, here are some comments

operations = [
migrations.AddField(
model_name="contentfile",
name="archive_checksum",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can you add a task to the migration to set archive_checksum to the current value of checksum and calculate the checksum from the content for existing contentfiles

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

good call.

@@ -1286,13 +1288,15 @@ class Meta:
"uid",
"title",
"description",
"archive_checksum",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You don't need archive_checksum in the serializer since it's not useful information for users or used for elasticsearch/vector search

unpublished_tasks = [
tasks.bulk_deindex_learning_resources.si(ids, resource_type),
]
if django_settings.QDRANT_ENABLE_INDEXING_PLUGIN_HOOKS:
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think the elasticsearch tasks should be chained before the vector embedding tasks since the vector embedding tasks can potentially take a long time. It's better to make the elasticsearch index up to date sooner

based on the resource_type (learning resource vs content file)
"""
client = qdrant_client()
if resource_type != CONTENT_FILE_TYPE:
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Does it make sense to have a seperate version of update_payload(), should_generate_embeddings(), _embedding_context() etc for learning resources and content files instead of having all the if statements?you should be able to know which version of the function to call in the task

)


def should_generate_embeddings(serialized_document, resource_type):
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think it makes sense to have seperate content file and learning resource verisons of this function instead of all the if statements.
You can consider separate content file or resource specific versions of update_payload(), and _embedding_context() too

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

good idea. I updated the code so they each have their own _embedding_context, update_payload and should_generate_embeddings methods

Copy link

github-actions bot commented May 2, 2025

OpenAPI Changes

Show/hide 16 changes: 0 error, 0 warning, 16 info
16 changes: 0 error, 0 warning, 16 info
info	[response-optional-property-added] at head/openapi/specs/v0.yaml	
	in API GET /api/v0/vector_content_files_search/
		added the optional property 'results/items/archive_checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v0.yaml	
	in API GET /api/v0/vector_content_files_search/
		added the optional property 'results/items/checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/content_file_search/
		added the optional property 'results/items/archive_checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/content_file_search/
		added the optional property 'results/items/checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/contentfiles/
		added the optional property 'results/items/archive_checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/contentfiles/
		added the optional property 'results/items/checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/contentfiles/{id}/
		added the optional property 'archive_checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/contentfiles/{id}/
		added the optional property 'checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/courses/{learning_resource_id}/contentfiles/
		added the optional property 'results/items/archive_checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/courses/{learning_resource_id}/contentfiles/
		added the optional property 'results/items/checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/courses/{learning_resource_id}/contentfiles/{id}/
		added the optional property 'archive_checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/courses/{learning_resource_id}/contentfiles/{id}/
		added the optional property 'checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learning_resources/{learning_resource_id}/contentfiles/
		added the optional property 'results/items/archive_checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learning_resources/{learning_resource_id}/contentfiles/
		added the optional property 'results/items/checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learning_resources/{learning_resource_id}/contentfiles/{id}/
		added the optional property 'archive_checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learning_resources/{learning_resource_id}/contentfiles/{id}/
		added the optional property 'checksum' to the response with the '200' status


Copy link

github-actions bot commented May 2, 2025

OpenAPI Changes

Show/hide 16 changes: 0 error, 0 warning, 16 info
16 changes: 0 error, 0 warning, 16 info
info	[response-optional-property-added] at head/openapi/specs/v0.yaml	
	in API GET /api/v0/vector_content_files_search/
		added the optional property 'results/items/archive_checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v0.yaml	
	in API GET /api/v0/vector_content_files_search/
		added the optional property 'results/items/checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/content_file_search/
		added the optional property 'results/items/archive_checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/content_file_search/
		added the optional property 'results/items/checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/contentfiles/
		added the optional property 'results/items/archive_checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/contentfiles/
		added the optional property 'results/items/checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/contentfiles/{id}/
		added the optional property 'archive_checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/contentfiles/{id}/
		added the optional property 'checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/courses/{learning_resource_id}/contentfiles/
		added the optional property 'results/items/archive_checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/courses/{learning_resource_id}/contentfiles/
		added the optional property 'results/items/checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/courses/{learning_resource_id}/contentfiles/{id}/
		added the optional property 'archive_checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/courses/{learning_resource_id}/contentfiles/{id}/
		added the optional property 'checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learning_resources/{learning_resource_id}/contentfiles/
		added the optional property 'results/items/archive_checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learning_resources/{learning_resource_id}/contentfiles/
		added the optional property 'results/items/checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learning_resources/{learning_resource_id}/contentfiles/{id}/
		added the optional property 'archive_checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learning_resources/{learning_resource_id}/contentfiles/{id}/
		added the optional property 'checksum' to the response with the '200' status


Copy link

github-actions bot commented May 2, 2025

OpenAPI Changes

Show/hide 16 changes: 0 error, 0 warning, 16 info
16 changes: 0 error, 0 warning, 16 info
info	[response-optional-property-added] at head/openapi/specs/v0.yaml	
	in API GET /api/v0/vector_content_files_search/
		added the optional property 'results/items/archive_checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v0.yaml	
	in API GET /api/v0/vector_content_files_search/
		added the optional property 'results/items/checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/content_file_search/
		added the optional property 'results/items/archive_checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/content_file_search/
		added the optional property 'results/items/checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/contentfiles/
		added the optional property 'results/items/archive_checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/contentfiles/
		added the optional property 'results/items/checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/contentfiles/{id}/
		added the optional property 'archive_checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/contentfiles/{id}/
		added the optional property 'checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/courses/{learning_resource_id}/contentfiles/
		added the optional property 'results/items/archive_checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/courses/{learning_resource_id}/contentfiles/
		added the optional property 'results/items/checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/courses/{learning_resource_id}/contentfiles/{id}/
		added the optional property 'archive_checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/courses/{learning_resource_id}/contentfiles/{id}/
		added the optional property 'checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learning_resources/{learning_resource_id}/contentfiles/
		added the optional property 'results/items/archive_checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learning_resources/{learning_resource_id}/contentfiles/
		added the optional property 'results/items/checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learning_resources/{learning_resource_id}/contentfiles/{id}/
		added the optional property 'archive_checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learning_resources/{learning_resource_id}/contentfiles/{id}/
		added the optional property 'checksum' to the response with the '200' status


Copy link

github-actions bot commented May 2, 2025

OpenAPI Changes

Show/hide 16 changes: 0 error, 0 warning, 16 info
16 changes: 0 error, 0 warning, 16 info
info	[response-optional-property-added] at head/openapi/specs/v0.yaml	
	in API GET /api/v0/vector_content_files_search/
		added the optional property 'results/items/archive_checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v0.yaml	
	in API GET /api/v0/vector_content_files_search/
		added the optional property 'results/items/checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/content_file_search/
		added the optional property 'results/items/archive_checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/content_file_search/
		added the optional property 'results/items/checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/contentfiles/
		added the optional property 'results/items/archive_checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/contentfiles/
		added the optional property 'results/items/checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/contentfiles/{id}/
		added the optional property 'archive_checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/contentfiles/{id}/
		added the optional property 'checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/courses/{learning_resource_id}/contentfiles/
		added the optional property 'results/items/archive_checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/courses/{learning_resource_id}/contentfiles/
		added the optional property 'results/items/checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/courses/{learning_resource_id}/contentfiles/{id}/
		added the optional property 'archive_checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/courses/{learning_resource_id}/contentfiles/{id}/
		added the optional property 'checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learning_resources/{learning_resource_id}/contentfiles/
		added the optional property 'results/items/archive_checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learning_resources/{learning_resource_id}/contentfiles/
		added the optional property 'results/items/checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learning_resources/{learning_resource_id}/contentfiles/{id}/
		added the optional property 'archive_checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learning_resources/{learning_resource_id}/contentfiles/{id}/
		added the optional property 'checksum' to the response with the '200' status


Copy link

github-actions bot commented May 2, 2025

OpenAPI Changes

Show/hide 16 changes: 0 error, 0 warning, 16 info
16 changes: 0 error, 0 warning, 16 info
info	[response-optional-property-added] at head/openapi/specs/v0.yaml	
	in API GET /api/v0/vector_content_files_search/
		added the optional property 'results/items/archive_checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v0.yaml	
	in API GET /api/v0/vector_content_files_search/
		added the optional property 'results/items/checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/content_file_search/
		added the optional property 'results/items/archive_checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/content_file_search/
		added the optional property 'results/items/checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/contentfiles/
		added the optional property 'results/items/archive_checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/contentfiles/
		added the optional property 'results/items/checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/contentfiles/{id}/
		added the optional property 'archive_checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/contentfiles/{id}/
		added the optional property 'checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/courses/{learning_resource_id}/contentfiles/
		added the optional property 'results/items/archive_checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/courses/{learning_resource_id}/contentfiles/
		added the optional property 'results/items/checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/courses/{learning_resource_id}/contentfiles/{id}/
		added the optional property 'archive_checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/courses/{learning_resource_id}/contentfiles/{id}/
		added the optional property 'checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learning_resources/{learning_resource_id}/contentfiles/
		added the optional property 'results/items/archive_checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learning_resources/{learning_resource_id}/contentfiles/
		added the optional property 'results/items/checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learning_resources/{learning_resource_id}/contentfiles/{id}/
		added the optional property 'archive_checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learning_resources/{learning_resource_id}/contentfiles/{id}/
		added the optional property 'checksum' to the response with the '200' status


Copy link

github-actions bot commented May 5, 2025

OpenAPI Changes

Show/hide 8 changes: 0 error, 0 warning, 8 info
8 changes: 0 error, 0 warning, 8 info
info	[response-optional-property-added] at head/openapi/specs/v0.yaml	
	in API GET /api/v0/vector_content_files_search/
		added the optional property 'results/items/checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/content_file_search/
		added the optional property 'results/items/checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/contentfiles/
		added the optional property 'results/items/checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/contentfiles/{id}/
		added the optional property 'checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/courses/{learning_resource_id}/contentfiles/
		added the optional property 'results/items/checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/courses/{learning_resource_id}/contentfiles/{id}/
		added the optional property 'checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learning_resources/{learning_resource_id}/contentfiles/
		added the optional property 'results/items/checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learning_resources/{learning_resource_id}/contentfiles/{id}/
		added the optional property 'checksum' to the response with the '200' status


Copy link

github-actions bot commented May 5, 2025

OpenAPI Changes

Show/hide 8 changes: 0 error, 0 warning, 8 info
8 changes: 0 error, 0 warning, 8 info
info	[response-optional-property-added] at head/openapi/specs/v0.yaml	
	in API GET /api/v0/vector_content_files_search/
		added the optional property 'results/items/checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/content_file_search/
		added the optional property 'results/items/checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/contentfiles/
		added the optional property 'results/items/checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/contentfiles/{id}/
		added the optional property 'checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/courses/{learning_resource_id}/contentfiles/
		added the optional property 'results/items/checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/courses/{learning_resource_id}/contentfiles/{id}/
		added the optional property 'checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learning_resources/{learning_resource_id}/contentfiles/
		added the optional property 'results/items/checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learning_resources/{learning_resource_id}/contentfiles/{id}/
		added the optional property 'checksum' to the response with the '200' status


Copy link

github-actions bot commented May 5, 2025

OpenAPI Changes

Show/hide 8 changes: 0 error, 0 warning, 8 info
8 changes: 0 error, 0 warning, 8 info
info	[response-optional-property-added] at head/openapi/specs/v0.yaml	
	in API GET /api/v0/vector_content_files_search/
		added the optional property 'results/items/checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/content_file_search/
		added the optional property 'results/items/checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/contentfiles/
		added the optional property 'results/items/checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/contentfiles/{id}/
		added the optional property 'checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/courses/{learning_resource_id}/contentfiles/
		added the optional property 'results/items/checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/courses/{learning_resource_id}/contentfiles/{id}/
		added the optional property 'checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learning_resources/{learning_resource_id}/contentfiles/
		added the optional property 'results/items/checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learning_resources/{learning_resource_id}/contentfiles/{id}/
		added the optional property 'checksum' to the response with the '200' status


Copy link

github-actions bot commented May 5, 2025

OpenAPI Changes

Show/hide 8 changes: 0 error, 0 warning, 8 info
8 changes: 0 error, 0 warning, 8 info
info	[response-optional-property-added] at head/openapi/specs/v0.yaml	
	in API GET /api/v0/vector_content_files_search/
		added the optional property 'results/items/checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/content_file_search/
		added the optional property 'results/items/checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/contentfiles/
		added the optional property 'results/items/checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/contentfiles/{id}/
		added the optional property 'checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/courses/{learning_resource_id}/contentfiles/
		added the optional property 'results/items/checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/courses/{learning_resource_id}/contentfiles/{id}/
		added the optional property 'checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learning_resources/{learning_resource_id}/contentfiles/
		added the optional property 'results/items/checksum' to the response with the '200' status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learning_resources/{learning_resource_id}/contentfiles/{id}/
		added the optional property 'checksum' to the response with the '200' status


@shanbady shanbady requested a review from abeglova May 5, 2025 16:23
Copy link
Contributor

@abeglova abeglova left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lgtm

@shanbady shanbady merged commit 69274bf into main May 6, 2025
12 of 13 checks passed
@shanbady shanbady deleted the shanbady/embeddings-updates-and-removals branch May 6, 2025 15:16
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Needs Review An open Pull Request that is ready for review
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants