paint-brush
¿AI ukax Chiqpachans Código ukar amuyañ munasmati? Aka Herramientax Yanapt’aspawa sasaw Siukata@badmonster0
Machaq sarnaqäwi

¿AI ukax Chiqpachans Código ukar amuyañ munasmati? Aka Herramientax Yanapt’aspawa sasaw Si

ukata LJ8m2025/03/21
Read on Terminal Reader

Sinti jaya pachanakawa; Uñxatt’añataki

Paso a paso guia para base de código índice para RAG ukampi CocoIndex ukampi Tree-sitter ukampi: chunking, embedding, semántico thakhi, ukatxa índice vectorial luraña suma apsuñataki.
featured image - ¿AI ukax Chiqpachans Código ukar amuyañ munasmati? Aka Herramientax Yanapt’aspawa sasaw Si
LJ HackerNoon profile picture
0-item

Aka blog tuqinx kunjams RAG ukatakix codebase ukar CocoIndex ukamp indexañax uk uñacht’ayapxäma. CocoIndex ukax mä herramienta ukawa, ukax índice ukat jiskt’äwinak datos ukar yanapt’añatakiwa. Ukax mä marco ukham apnaqañatakiw wakicht’ata, juma pachpaw pipeline de datos ukar lurañataki. CocoIndex ukax código base chunking ukaruw yanapt’i, nativo Tree-sitter ukampiw yanapt’asi.

Quqanak uñjir jaqi

Quqa-sitter ukax mä parser generador herramienta ukat mä incremental parsing biblioteca ukawa, ukax Rust 🦀 - GitHub ukan utji. CocoIndex ukax Rust ukan mayacht’asiw Tree-sitter ukamp luratawa, ukhamat código ukar sum uñakipt’añataki ukhamarak sintaxis quqanak apsuñataki kunayman programación arunakataki.


Codebase chunking ukax mä codebase ukar jisk’a, semánticamente significativo chunks ukar t’unjañ lurawiwa. CocoIndex ukax Tree-sitter ukan ch’amanchawinakap aprovecha, chiqpach sintaxis ukan estructura ukarjam amuyt’at chimpunak chimpuntañataki, jan ukax arbitrariu líneas ukar t’unjañataki. Ukatx uka semánticamente coherente chimpunakax sistemas RAG ukatakix mä índice juk’amp aski lurañatakiw apnaqasi, ukax juk’amp chiqaparu código apsuñapataki ukhamarak contexto juk’amp suma jark’aqañataki.


Fast pass 🚀 - ukax taqpach codigo ukax akan jikxatasi . ~ 50 líneas de código Python ukakiw RAG pipeline ukatakix utji, uñakipt'añäni 🤗!

Github ukan CocoIndex ukar mä warawara churapxañamawa, jiwasan lurawinakas munapxsta ukhax yanapt’apxita. Walpun yuspajarapxsma mä junt'u coco jamp'att'awimpi 🥥🤗.

Nayraqata wakisirinaka

Postgres ukax jan utjkchi ukhax, instalación guia ukar uñakipt’añamawa . CocoIndex ukax Postgres uka apnaqi, índice de datos ukar apnaqañataki, jiwasax thakhi uñacht’äwisanx yaqha bases de datos ukar yanapt’añatakiw utji, ukax nayrar sartaskir ukanakas utjarakiwa. Yaqha bases de datos ukar munaschi ukhax mä GitHub jan walt’äw jan ukax Discord ukar lurasaw yatiyapxita.

CocoIndex Flujo ukar uñt’ayaña

Mä base de código ukan uñakipañatakix cocoIndex flujo ukar qhanañcht’añäni ukat RAG ukar indexañäni.

CocoIndex Flujo ukax Código ukar uñt’ayañataki


Aka pata tuqinkir diagrama de flujo ukax kunjams jiwasan código base ukar lurañasa uk uñacht’ayi:

  1. Sistema de ficheros local ukan código qillqatanakap uñakipt’aña
  2. Archivo extensiones ukanaka apsuña
  3. Quqa-sitter apnaqañampiw código semántico ukar jaljaña
  4. Sapa chunk ukatakix embeddings ukanakaw lurasi
  5. Mä vector base de datos ukan imaña, ukax apsuñataki


Aka flujo ukax mä juk’a pacharuw phuqhachañäni.

1. Código base ukax mä phunchhawimp yapxatatawa

 @cocoindex.flow_def(name="CodeEmbedding") def code_embedding_flow(flow_builder: cocoindex.FlowBuilder, data_scope: cocoindex.DataScope): """ Define an example flow that embeds files into a vector database. """ data_scope["files"] = flow_builder.add_source( cocoindex.sources.LocalFile(path="../..", included_patterns=["*.py", "*.rs", "*.toml", "*.md", "*.mdx"], excluded_patterns=[".*", "target", "**/node_modules"])) code_embeddings = data_scope.add_collector()

Aka uñacht’awina, cocoindex codebase ukax saphi directorio ukanx indexañatakiw saraski. Ukaxa thakhi mayjt’ayaña codebase ukaru indexaña munata. Taqi qillqatanakax .py , .rs , .toml , .md , .mdx , ukat directorios saltar ukanak ., target (saphin) ukat node_modules (kuna directorio manqhan) ukanakamp qalltasin extensiones ukanakampiw indexañäni.

flow_builder.add_source ukax mä tabla lurani aka jisk’a chiqanakampi, aka chiqan qillqatanaka uñakipt’aña.

  • filename (llave, tipo: str ): qillqatan qillqat sutipa, sañäni dir1/file1.md
  • content (tipo: str ukax binary ukax False ukhamawa , jan ukhamäkanixa bytes ): qillqatan utjki uka

2. Sapa qillqata luraña ukhamaraki yatiyawinak apthapiña

2.1 Mäqillqat sutimpi jilxatayaña apsuña

Nayraqatax mä luraw qhanañcht’añäni, sapa qillqat lurañ pachanx mä qillqat sutimp jilxatayañataki. Aka chiqanx funcionamiento personalizado ukatakix documentación ukaw jikxatasi .

 @cocoindex.op.function() def extract_extension(filename: str) -> str: """Extract the extension of a filename.""" return os.path.splitext(filename)[1]


Ukatxa sapa archivo uñakipaña ukhamaraki yatiyawinak apthapiña.

 # ... with data_scope["files"].row() as file: file["extension"] = file["filename"].transform(extract_extension)


Aka chiqanx arsuwi sutimp jach’anchawi apsuñasawa ukatx extension chiqan imañasawa. sañäni, qillqat sutix spec.rs ukhamawa, extension .rs ukhamawa.

2.2 Uka qillqataxa jisk’a t’aqaru jaljañawa

Ukxarusti, uka qillqatarux jisk’a t’aqanakaruw jaljañäni. Jiwasax SplitRecursively uka lurawimpiw qillqat chimpunak jaljañatakix apnaqapxta. Uka lurawitak qillqatanakax akan jikxatasi .


CocoIndex ukax Tree-sitter ukaruw yanapt’i, ukhamat aru parámetro language pasañapataki. Taqi yanapt’at aru sutinaka ukat jilxatäwinak uñjañatakix, aka chiqan qillqatanaka uñakipt’añäni . Taqi jach’a arunakax yanapt’atawa, sañäni, Python, Rust, JavaScript, TypeScript, Java, C++, ukat juk’ampinaka, jan uñt’ayat jan ukax uñt’ayat arunakax jan yanapt’atäkchi ukhax sapuru qillqatjam uñjatäni.


 with data_scope["files"].row() as file: # ... file["chunks"] = file["content"].transform( cocoindex.functions.SplitRecursively(), language=file["extension"], chunk_size=1000, chunk_overlap=300)

2.3 Chunks ukanaka ch’uqt’ayaña

Jiwasax SentenceTransformerEmbed uka lurawimpiw chimpunak uñt’ayañäni. Uka lurawitak qillqatanakax akan jikxatasi . Ukax 12k modelos ukanakaw 🤗 Hugging Face ukamp yanapt'ata. Ukax mä modelo favorito ukarux ajlliñamawa.

 def code_to_embedding(text: cocoindex.DataSlice) -> cocoindex.DataSlice: """ Embed the text using a SentenceTransformer model. """ return text.transform( cocoindex.functions.SentenceTransformerEmbed( model="sentence-transformers/all-MiniLM-L6-v2"))


Ukatx sapa chunk ukatakix, code_to_embedding uka lurawimpiw uñakipt’añäni. ukatx code_embeddings apthapiriruw uñt’ayawinak apthapiña.


Jiwasax aka code_to_embedding lurawix apsuwaytanwa, jan ukax chiqak transform(cocoindex.functions.SentenceTransformerEmbed(...)) ukar jawsañat sipansa.


Ukax kunatix aka maynix indexación flujo edificio ukat jiskt’äw apnaqir qhanañchäwimp chikancht’asiñ munapxta. Jan ukax, juk’amp jan ch’amäñapataki. Ukhamarakiw walikïskiwa aka extra función ukat chiqak lurañanak chiqaparu - janiw mä jach’a lurawikiti mä juk’a copia pegar, ukax proyecto quickstart ukatakiw lurapxta.


 with data_scope["files"].row() as file: # ... with file["chunks"].row() as chunk: chunk["embedding"] = chunk["text"].call(code_to_embedding) code_embeddings.collect(filename=file["filename"], location=chunk["location"], code=chunk["text"], embedding=chunk["embedding"])

2.4 Uka chimpunakaxa apthapitawa

Tukuyañatakix, mä tabla ukar embeddings ukanakax exportación uñacht’ayañäni.

 code_embeddings.export( "code_embeddings", cocoindex.storages.Postgres(), primary_key_fields=["filename", "location"], vector_index=[("embedding", cocoindex.VectorSimilarityMetric.COSINE_SIMILARITY)])

3. Jiskt’awinaka apnaqiri wakicht’aña índice ukataki

Jiwasax SimpleSemanticsQueryHandler ukampiw índice ukar jiskt’asiñäni. Qhanacht’añatakix code_to_embedding uka lurawinx parámetro query_transform_flow ukaruw pasañasa. Ukax kunatix jiskt’äw apnaqirix pachpa modelo de incrustación ukampiw apnaqani, kunjamatix flujo ukan apnaqatäki ukhama.

 query_handler = cocoindex.query.SimpleSemanticsQueryHandler( name="SemanticsSearch", flow=code_embedding_flow, target_name="code_embeddings", query_transform_flow=code_to_embedding, default_similarity_metric=cocoindex.VectorSimilarityMetric.COSINE_SIMILARITY)


Jiskt’awi apnaqiri apnaqañataki mä jach’a lurawi qhananchaña.

 @cocoindex.main_fn() def _run(): # Run queries in a loop to demonstrate the query capabilities. while True: try: query = input("Enter search query (or Enter to quit): ") if query == '': break results, _ = query_handler.search(query, 10) print("\nSearch results:") for result in results: print(f"[{result.score:.3f}] {result.data['filename']}") print(f" {result.data['code']}") print("---") print() except KeyboardInterrupt: break if __name__ == "__main__": load_dotenv(override=True) _run()


@cocoindex.main_fn() k’achacht’irix biblioteca ukaruw qalltaraki, ukax wakicht’awinakampiw pacha mayjt’awinakat apkatata. Qalltañatakix documentación uñakipt’aña juk’amp yatxatañataki.

Ukax índice ukan wakicht'atawa & machaqar tukuyatawa

🎉 Jichhax jumanakax taqiniw wakicht'atäxapxtaxa!

Aka kamachinak phuqhañamawa wakicht’añataki ukhamaraki machaqar tukuyañataki índice.

 python main.py cocoindex setup python main.py cocoindex update


Ukax terminal ukan estado de actualizaciones de índice ukar uñjatawa

Terminal uñacht’ayaña índice actualización lurawi


Uka jisktʼa yantʼaña


Aka pachanxa, servidor cocoindex ukax qalltasispawa ukatx RAG ukax apnaqañ pachax datos ukar uñtasitw lurasispa.


Índice ukar yant’añatakix pä amtawiw utji:

1ri amtawi: Terminal ukan servidor índice ukar apnaqaña

 python main.py


Kunawsatix jiskt’awi uñjktan ukhax thakhi jiskt’awiruw mantasma. sañäni: spec.

 Enter search query (or Enter to quit): spec


Uka thakhinchawixa terminal ukanwa jikxatasi

Terminal ukan thaqhañax utjiwa


Kutt’ayat amuyunaka - sapa qillqt’atax puntuación (Cosine Similarity), archivo suti, ukat código fragmento ukanak uñt’ayi. cocoindex uksanxa, cocoindex.VectorSimilarityMetric.COSINE_SIMILARITY ukampiw jiskt’awimp indexat yatiyawinakampix niya kipkakïtap uñakipañataki. Yaqha métricas ukar mayjt’ayaraksnawa ukat jank’akiw yant’asma.


Consine Similarity tuqit juk’amp yatxatañatakix Wiki uñakipt’añäni.


2 amtawi: CocoInsight ukax pipeline de datos ukat índice de datos ukanak amuyañatakiw apnaqasi


CocoInsight ukax mä herramienta ukawa, ukax pipeline de datos ukat índice de datos ukanak amuyañatakiw yanapt’i. Ukax CocoIndex local servidor ukaruw cero datos retención ukampiw chikañchasi.


CocoInsight ukax Early Access ukankiwa jichhax (Gratis) 😊 ¡Jumaw jikxatapxitu! Mä jank’ak 3 minutos video yatichäwi CocoInsight tuqit: YouTube ukan uñt’ayaña .

CocoIndex ukax mä servidor ukan irnaqañapawa

 python main.py cocoindex server -c https://cocoindex.io


Mä kutix servidor ukax apnaqatäxi ukhax CocoInsight ukax navegador ukan jist’aratawa. Ukax mä servidor local CocoIndex ukaruw uñt’ayasi ukatx pipeline de datos ukat índice ukaruw uñt’ayasi.

CocoInsight UI ukax yatiyawinak uñakipañ uñacht’ayi


Kupi tuqinxa, uñakipt’añatakix datos flujo ukax jiwasanakan qhanañchatawa.


Ch’iqa tuqinxa, índice de datos ukax datos previsuales ukan uñjasi.

CocoInsight Datos Nayrïr uñakipañax indexado código chimpunak uñacht’ayi

Kawkïr filarus ch’iqt’asmawa uka datos ukar mantañ tuqit yatiyawinak uñjañataki, ukatx código chunks ukan taqpach contenido ukat incrustaciones ukanakap uñjañatakiwa.

Ayllunkirinakaxa

¡Ayllunkirinakat ist’añax wali munatawa! Github ukat Discord ukanakan jikxatapxasmawa.


Jumatix aka post ukat lurawinakas munassta ukhax CocoIndex ukar Github ukan mä warawara ⭐ ukamp yanapt’añamawa. Mä junt'u coco jamp'att'awimpiw yuspajarapxsma 🥥🤗.