برنامه نویسی

من مدل جدید تعبیه شده qodo-embed-1🤯 را امتحان کردم

سلام devs👋

اخیراً ، من qodo را امتحان کردم dig-embed-1، یک مدل جدید تعبیه شده کد جدید که به طور خاص برای انجام کارهای بازیابی در توسعه نرم افزار ساخته شده است. من واقعاً تحت تأثیر عملکرد این کار ، حتی در کوچکتر قرار گرفتم 1.5b نوع 🤏

در این مقاله ، من این مباحث را با جزئیات پوشش می دهم:

  • تعبیه کد چیست؟
  • kodo-embed-1-1.5b چیست؟
  • قابلیت های اصلی مدل ها
  • دستگیری با qodo-embed-1-1.5b

بیایید شروع کنیم

انتظار داشتن

اما صبر کنید ، قبل از شروع کار ، ابتدا درک کنیم:

تعبیه کد چیست؟

تعبیه کد ساختارهای کد پیچیده را به بردارهای عددی که ضبط می کند معنی وت عمل کد

به عبارت ساده ، به تعبیه کد مانند تبدیل کد خود به شماره های هوشمند که کد را به معنای آن می گیرند ، فکر کنید ، نه فقط به نظر می رسد.

این دقیقاً مانند چگونگی ارائه Google Maps مختصات GPS به مکان ها (latitudeبا longitude) ، تعبیه های کد یک بردار (لیستی از شماره ها) را به کد شما می دهد تا ماشین ها بتوانند آن را درک و مقایسه کنند.

به عنوان مثال ، این دو عملکرد پایتون را در نظر بگیرید:

def add_numbers(a, b):
    return a + b

def sum_two_values(x, y):
    result = x + y
    return result
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

بنابراین ، اگر دو قطعه کد کارهای مشابهی انجام دهند ، تعبیه آنها در فضای شماره نزدیک به یکدیگر خواهد بود ، حتی اگر کد متفاوت به نظر برسد.

kodo-embed-1-1.5b چیست؟

qodo-embed-1-1.5b یک مدل تعبیه شده کد مدرن (پارامترهای 1.5b) است که برای کارهای بازیابی در حوزه توسعه نرم افزار طراحی شده است.

این مدل برای بهینه سازی شده است زبان طبیعی به کد وت کد به کد بازیابی

قابلیت های اصلی این مدل:

🔍 جستجوی کد: جستجوی کارآمد را در میان کد های بزرگ امکان پذیر می کند

🧠 نسل بازیابی-اوت (RAG): تولید کد را با درک متنی تقویت می کند

🤓 درک کد معنایی: روابط پیچیده بین قطعه کد را ضبط می کند

🌐 پشتیبانی چند زبانی: کد فرآیند از 9 زبان برنامه نویسی اصلی. ((Python ، C ++ ، C#، Go ، Java ، JavaScript ، PHP ، Ruby ، ​​TypeScript)

📈 تعبیه های با ابعاد بالا: نمایش های غنی 1536 بعدی را تولید می کند

اگر علاقه مند به کسب اطلاعات بیشتر در این مورد هستید ، می توانید این وبلاگ را بررسی کنید

دستگیری با qodo-embed-1-1.5b

اکنون که می فهمیم تعبیه های کدی چیست و چه qodo-embed-1-1.5b به جدول می آورد ،

بیایید به این موضوع بپردازیم که چگونه می توانید استفاده از این مدل را با مواردی از مثال استفاده کنید.

شروع

Qodo-Embed-1 در دو اندازه موجود است:

  • Lite (1.5b)-Dig-Embed-1-1.5b
  • متوسط ​​(7b)-Dig-Embed-1-7b

می توانید از طریق بغل کردن صورت از مدل استفاده کنید ترانسفورماتور یا فرستنده کننده کتابخانه ها

تنظیم سریع

# Install required libraries
pip install sentence-transformers
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

🔍 از مورد استفاده کنید: شباهت جمله

بیایید سعی کنیم با مقایسه با یکدیگر جمله مشابهی پیدا کنیم.

from sentence_transformers import SentenceTransformer
from sklearn.metrics.pairwise import cosine_similarity
import numpy as np

# Load the model
model = SentenceTransformer("Qodo/Qodo-Embed-1-1.5B", trust_remote_code=True)

# Source sentence and comparison list
source_sentence = "That is a very happy person"
sentences_to_compare = [
    "That is a happy person",
    "That is a happy dog",
    "Today is a sunny day",
    "The man is joyful and smiling"
]

# Encode source and comparison sentences
source_embedding = model.encode([source_sentence])
comparison_embeddings = model.encode(sentences_to_compare)

# Compute cosine similarity (returns a 2D array)
similarity_scores = cosine_similarity(source_embedding, comparison_embeddings)[0]

# Find most similar sentence
most_similar_idx = int(np.argmax(similarity_scores))
most_similar_sentence = sentences_to_compare[most_similar_idx]
similarity_score = similarity_scores[most_similar_idx]

# Print results
print(f"Source Sentence: \"{source_sentence}\"")
print(f"Most Similar Sentence: \"{most_similar_sentence}\"")
print(f"Similarity Score: {similarity_score:.4f}")
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

اینجا چه اتفاقی می افتد؟🤔:

  • مدل هر جمله را به یک بردار اعداد تبدیل می کند.
  • سپس ما استفاده می کنیم cosine_similarity برای مقایسه چقدر نزدیک آنها.
  • شما آن را خواهید دید “این یک فرد خوشحال است“بیشتر شبیه” استاین یک فرد بسیار خوشحال است

خروجی مورد انتظار: مدل مشابه جمله و نمره شباهت را برمی گرداند
توجه: نمره از 0 تا 1 و بالاتر به معنای مشابه تر است.

Source Sentence: "That is a very happy person"
Most Similar Sentence: "That is a happy person"
Similarity Score: 0.9795
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

🔍 از پرونده استفاده کنید: جستجوی کد

اکنون ، ما سعی خواهیم کرد یک قطعه کد خاص را از چندین قطعه کد از طریق پرس و جو در زبان طبیعی پیدا کنیم.

from sentence_transformers import SentenceTransformer
from sklearn.metrics.pairwise import cosine_similarity
import numpy as np


model = SentenceTransformer("Qodo/Qodo-Embed-1-1.5B", trust_remote_code=True)

snippets = [
    """def binary_search(arr, target):
    low, high = 0, len(arr)-1
    while low <= high:
        mid = (low + high) // 2
        if arr[mid] == target:
            return mid
        elif arr[mid] < target:
            low = mid + 1
        else:
            high = mid - 1
    return -1""",

    """def bubble_sort(arr):
    for i in range(len(arr)):
        for j in range(0, len(arr)-i-1):
            if arr[j] > arr[j+1]:
                arr[j], arr[j+1] = arr[j+1], arr[j]""",

    """def reverse_linked_list(head):
    prev = None
    current = head
    while current:
        next_node = current.next
        current.next = prev
        prev = current
        current = next_node
    return prev"""
]

query = "How to reverse a linked list in Python"
query_embedding = model.encode(query)
snippets_embeddings = model.encode(snippets)

similarities = cosine_similarity([query_embedding], snippets_embeddings)
most_similar_idx = np.argmax(similarities)

print("Most relevant code snippet:")
print(snippets[most_similar_idx])
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

اینجا چه اتفاقی می افتد؟

  • ما در حال رمزگذاری یک پرس و جو در زبان طبیعی و قطعه های چند کد هستیم.
  • این مدل مشخص می کند که کدام قطعه با استفاده از شباهت Cosine بیشتر مربوط به پرس و جو است.

✅ خروجی مورد انتظار: مدل به درستی مشخص می کند reverse_linked_list عملکرد به عنوان مناسب ترین مسابقه.

Most relevant code snippet:
def reverse_linked_list(head):
    prev = None
    current = head
    while current:
        next_node = current.next
        current.next = prev
        prev = current
        current = next_node
    return prev
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

🔍 مثال استفاده کنید: RAG با درک متنی

حال بیایید درک متنی مدل را آزمایش کنیم

import numpy as np
from sklearn.metrics.pairwise import cosine_similarity
from sentence_transformers import SentenceTransformer

model = SentenceTransformer("Qodo/Qodo-Embed-1-1.5B", trust_remote_code=True)

user_prompt = "Create a Flask route that accepts POST requests and returns JSON"
context_snippets = [
    """from flask import Flask, request, jsonify

app = Flask(__name__)

@app.route('/submit', methods=['POST'])
def submit():
    data = request.get_json()
    return jsonify(data)
""",
    """from fastapi import FastAPI, Request

app = FastAPI()

@app.post("/items")
def create_item(request: Request):
    return {"message": "Item received"}"""
]

prompt_embedding = model.encode(user_prompt)
context_embeddings = model.encode(context_snippets)
scores = cosine_similarity([prompt_embedding], context_embeddings)

best_match = context_snippets[np.argmax(scores)]
print("Context snippet to augment generation:")
print(best_match)
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

اینجا چه اتفاقی می افتد؟

  • ما در حال تلاش برای بازیابی مناسب ترین قطعه متن بر اساس سریع ارائه شده هستیم.

✅ خروجی مورد انتظار: مدل قطعه صحیح مبتنی بر فلاسک را برای تقویت کد در یک خط لوله RAG انتخاب می کند.

Context snippet to augment generation:
from flask import Flask, request, jsonify

app = Flask(__name__)

@app.route('/submit', methods=['POST'])
def submit():
    data = request.get_json()
    return jsonify(data)
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

🔍 مثال استفاده از مورد: پشتیبانی چند زبانی

حال ، بیایید آزمایش کنیم که مدل قادر به شناسایی زبانهای مختلف برنامه نویسی باشد.

import numpy as np
from sklearn.metrics.pairwise import cosine_similarity
from sentence_transformers import SentenceTransformer

model = SentenceTransformer("Qodo/Qodo-Embed-1-1.5B", trust_remote_code=True)

queries = [
    "How to define a function in Java",
    "How to create a list in Ruby"
]

snippets = [
    """public void greet() {
    System.out.println("Hello World");
}""",
    """my_list = ["apple", "banana", "cherry"]"""
]

query_embeddings = model.encode(queries)
snippet_embeddings = model.encode(snippets)
scores = cosine_similarity(query_embeddings, snippet_embeddings)

for i, query in enumerate(queries):
    best_match = snippets[np.argmax(scores[i])]
    print(f"Best match for '{query}':\n{best_match}\n")
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

✅ خروجی مورد انتظار: هر پرس و جو با قطعه کد صحیح زبان مطابقت دارد و قابلیت چند زبانه مدل را تأیید می کند.

Best match for 'How to define a function in Java':
public void greet() {
    System.out.println("Hello World");
}

Best match for 'How to create a list in Ruby':
my_list = ["apple", "banana", "cherry"]
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

مثالهایی که من استفاده کردم برای نشان دادن قابلیت های اصلی است ، می توانید آنها را برای گردش کار بازیابی پیچیده تر گسترش داده و با ایده های خود نیز آزمایش کنید!

👉 می توانید تمام این قطعه های کد را در مخزن GitHub من پیدا کنید و خودتان آنها را امتحان کنید.

thoughts افکار نهایی

بنابراین ، در هر مثال مدل نتایج صحیح و دقیقی را ارائه می دهد.
حتی پارامترهای 1.5B است ، عملکرد قابل مقایسه با مدل ها را ارائه می دهد 3-4 اندازه آن

اگر در حال ساختن خط لوله RAG ، یک ابزار جستجوی کد داخلی هستید یا فقط می خواهید محیط DEV خود را با بازیابی هوشمند غنی کنید ، این یک مدل است که ارزش امتحان کردن را دارد.

با تشکر از شما برای خواندن این تا کنون اگر این مقاله را مفید می دانید ، لطفاً این مقاله را دوست داشته و به اشتراک بگذارید. کسی می تواند آن را نیز مفید پیدا کند.

با من ارتباط برقرار کنید لوب وت وابسته به لینکدین

تصویر dev_kiran

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا