Ada, Babbage, Curie, Cushman and Davinci are different models doing the same, but having different size. The model with a higher size tends to give better results, but has a higher price and takes more time to give result (because it requires more computation). Davinci is the model with the biggest size.
The models that have “code” in the name are part of “Codex” - they serve the purpose of generating code.
The models that have “text” in the name serve the purpose of generating plain text (that’s their primary purpose, but they can also generate code to a small extent).
The models that have “search” or “similarity” in name are for “embeddings” - they serve the purpose of finding similar texts (as described in the documentation under “embeddings”).
The models that have “search-code” in the name are for searching with “code”, “search-text” is for searching with text. The models that have “search” in the name, but not “code” are for searching text (“document” is for specyifing the documents among which you search, “query” is for the query by which you search). “similarity” is for finding similar documents as well, but there’s some difference between “search” and “similarity”. From what I’ve remember it’s mostly about the length of the searched documents.
The models with “edit” are for editing code or text (as opposed to completing it).
The models with “instruct” are the models trained specifically for being able to deal with the input (prompt) in a form or instructions.
The models with “insert” are for insertions (you pass [insert] in the prompt and it generates text/code in the middle of the prompt, in place where you put “insert”, instead of generating at the end).
“001”, “002” are different versions. I assume “002” are better than “001” becuase 002 is an improved version of 001.